【问题标题】:I am using django for a project and i got this error我正在使用 django 进行项目,但出现此错误
【发布时间】:2021-05-08 18:14:27
【问题描述】:

我在 Django 中做一个项目,我得到了这个错误。这是怎么发生的? NoReverseMatch 在 / 未找到没有参数的“create_order”反向。尝试了 1 种模式:['create_order/(?P[^/]+)/$']

urls.py

从 django.urls 导入路径

从帐户导入视图

urlpatterns = [

path('',views.home, name="home"),
path('product/',views.products, name="product"),
path('customer/<str:pkid>/',views.customer, name="customer"),

path('create_order/<str:pk>/',views.createOrder, name="create_order"),
path('update_order/<str:pk>/',views.updateOrder, name="update_order"),
path('delete_order/<str:pk>/',views.deleteOrder, name="delete_order"),

]

views.py

def createOrder(request, pk):

customer = Customer.objects.get(id=pk)
form = OrderForm(initial={'customer':customer})
if request.method == 'POST':
    form = OrderForm(request.POST)
    if form.is_valid:
        form.save()
        return redirect('/')
context =  {'form':form}
return render(request, 'accounts/order_form.html', context)

order_form.html

{% 扩展 'accounts/main.html' %}

{% 加载静态 %}

{% 块内容 %}

<form action="" method="POST">


    {% csrf_token %}

    {{ form }}

    <input type="submit" name="Submit">
</form>

{% 端块 %}

customer.html`

{% extends 'accounts/main.html' %}

{% block content %}
<br>
<div class="row" style="margin: auto;">
    <div class="col-md">
        <div class="card card-body">
            <h5>Customer:{{customer.name}}</h5>
            <hr>
            <a href="" class="btn btn-outline-info btn-sm btn-block">Update Customer</a>
            <a href="{% url 'create_order' customer.id %}" class="btn btn-outline-info btn-sm btn-block">Place Order</a>
        </div>
    </div>

    <div class="col-md">
        <div class="card card-body">
            <h5>Contact Information</h5>
            <hr>
            <p>Email: {{customer.email}}</p>
            <p>Phone: {{customer.phone}}</p>
        </div>
    </div>

    <div class="col-md">
        <div class="card card-body">
            <h5>Total Orders</h5>
            <hr>
            <h1 style="text-align:center;padding:10px">{{total_orders}}</h1>
        </div>
    </div>
</div>

<br>
<div class="row" style="margin: auto;">
    <div class="col">
        <div class="card card-body">
            <form method="get">
                
                <button class="btn btn-primary" type="submit">Search</button>
            </form>
        </div>
    </div>
</div>
<br>

<div class="row" style="margin: auto;">
    <div class="col-md">
        <div class="card card-body">
            <table class="table table-sm">
                <tr>
                    <th>Product</th>
                    <th>Category</th>
                    <th>Date Ordered</th>
                    <th>Status</th>
                    <th>Update</th>
                    <th>Remove</th>
                </tr>
                {% for order in orders %}
                <tr>
                    <td>{{order.product.name}}</td>
                    <td>{{order.product.category}}</td>
                    <td>{{order.date_created}}</td>
                    <td>{{order.status}}</td>
                    <td><a class="btn btn-sm btn-warning" href="{% url 'update_order' order.id %}">Update</a></td>
                    <td><a class="btn btn-sm btn-danger" href="{% url 'delete_order' order.id %}">Remove</a></td>
                </tr>
                
                {% endfor %}
            
            </table>
        </div>
    </div>
</div>


{% endblock %}



        

【问题讨论】:

  • 请让您的代码更具可读性
  • 显示调用 createOrder 视图的模板。

标签: django django-models django-views django-forms django-templates


【解决方案1】:

NoReverseMatch 错误表示 Django 无法为您在任何已安装应用的 url 中提供的 url 找到匹配的 url 模式。

在你的 HTML 中写 action=" {%url 'create_order' order.id%}"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-05
    • 2020-06-23
    • 1970-01-01
    • 1970-01-01
    • 2021-04-30
    • 2023-01-24
    • 1970-01-01
    • 2023-02-14
    相关资源
    最近更新 更多