Django 与#x27相反;创建订单';没有找到任何参数。尝试了1种模式:[';创建订单/(?P<;pk>;[^/]+;)/$&]

Django 与#x27相反;创建订单';没有找到任何参数。尝试了1种模式:[';创建订单/(?P<;pk>;[^/]+;)/$&],django,django-views,django-templates,django-urls,Django,Django Views,Django Templates,Django Urls,当我使用 path('create_order/<str:pk>/', views.createOrder, name="create_order"), url.py from django.urls import path from . import views urlpatterns = [ path('', views.home, name="home"), path('products/', views.produ

当我使用

path('create_order/<str:pk>/', views.createOrder, name="create_order"),
url.py

from django.urls import path
from . import views


urlpatterns = [
    path('', views.home, name="home"),
    path('products/', views.products, name='products'),
    path('customer/<str:pk_test>/', 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"),


]
def createOrder(request, pk):
    OrderFormSet = inlineformset_factory(Customer, Order , fields=('product','status'), extra=9)
    customer = Customer.objects.get(id=pk)
    formset = OrderFormSet(queryset=Order.objects.none(), instance=customer)
    #form = OrderForm(initial={'customer':customer})
    if request.method == 'POST':
        #print('printing post', request.POST)
        formset = OrderFormSet(request.POST, instance=customer)
        if formset.is_valid():
            formset.save()
            return redirect('/')

    context = {'formset': formset}
    #return redirect('accounts/order_form.html', context)
    return render(request, 'accounts/order_form.html', context)
class Customer(models.Model):
    name = models.CharField(max_length=200, null=True, blank=True)
    phone = models.CharField(max_length=200, null=True, blank=True)
    email = models.CharField(max_length=200, null=True, blank=True)
    date_created = models.DateTimeField(auto_now_add=True, null=True)

    def __str__(self):
        return self.name
from django.urls import path
from . import views
urlpatterns = [
    path('', views.home, name="home"),
    path('products/', views.products, name='products'),
    path('customer/<str:pk_test>/', 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"),


]
from django.forms import inlineformset_factory
def createOrder(request, pk):
    OrderFormSet = inlineformset_factory(Customer, Order, fields=('product', 'status'), extra=10 )
    customer = Customer.objects.get(id=pk)
    formset = OrderFormSet(queryset=Order.objects.none(),instance=customer)
    #form = OrderForm(initial={'customer':customer})
    if request.method == 'POST':
        #print('Printing POST:', request.POST)
        #form = OrderForm(request.POST)
        formset = OrderFormSet(request.POST, instance=customer)
        if formset.is_valid():
            formset.save()
            return redirect('/')

    context = {'form':formset}
    return render(request, 'accounts/order_form.html', context)
我也尝试过重定向,但不起作用。问题是URL.py

customer.html

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

{% block content %}

<br>
<div class="row">
    <div class="col-md">
        <div class="card card-body">
            <h5>Customer:</h5>
            <hr>
            <a class="btn btn-outline-info btn-sm btn-block" href="">Update Customer</a>
            <a class="btn btn-outline-info  btn-sm btn-block" href="{% url 'create_order' customer.id %}">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 Order</h5>
            <hr>
            <h1 style="text-align: center;padding: 10px;">{{order_count}}</h1>
        </div>
    </div>
</div>

<br>
<div class="row">
    <div class="col">
        <div class="card card-body">
            <form method="POST">
                <button class="btn btn-primary" type="submit">Search</button>
            </form>
        </div>
    </div>
</div>

<br>
<div class="row">
    <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}}</td>
                        <td>{{order.product.category}}</td>
                        <td>{{order.date_created}}</td>
                        <td>{{order.status}}</td>
                        <td><a  class="btn btn-outline-info btn-md " href="{% url 'update_order' order.id %}">Update</a></td>
                        <td><a class="btn btn-outline-danger btn-md " href="{% url 'delete_order' order.id %}">Delete</a></td>
                    </tr>
                {% endfor %}
            </table>
        </div>
    </div>
</div>

{% endblock %}
{% extends 'accounts/main.html' %}
{% load static %}
{% block content %}
<div class="row">
    <div class="col-md-6">
        <div class="card card-body">
            <form action="" method="POST">
                {% csrf_token %}
                {{formset.managment_form}} <!-- to remove the managmentForm data missing or has been tempered wiith , error -->
                {% for form in formset %}
                {{formset}}    <!--in context of views.py -->
                <hr>
                {% endfor %}

                <input class="btn btn-outline-success btn-md" type="submit" name="submit">
            </form>
        </div>
    </div>
</div>

{% endblock %}
{%  extends 'accounts/main.html' %}
{% load static %}
{% block content %}


<div class="row">
    <div class="col-md-6">
        <div class="card card-body">

            <form action="" method="POST">
                {% csrf_token %}
                {{ form.management_form }}
                {% for field in form %}
                    {{field}}
                    <hr>
                {% endfor %}

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

        </div>
    </div>
</div>


{% endblock %}
order\u form.html

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

{% block content %}

<br>
<div class="row">
    <div class="col-md">
        <div class="card card-body">
            <h5>Customer:</h5>
            <hr>
            <a class="btn btn-outline-info btn-sm btn-block" href="">Update Customer</a>
            <a class="btn btn-outline-info  btn-sm btn-block" href="{% url 'create_order' customer.id %}">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 Order</h5>
            <hr>
            <h1 style="text-align: center;padding: 10px;">{{order_count}}</h1>
        </div>
    </div>
</div>

<br>
<div class="row">
    <div class="col">
        <div class="card card-body">
            <form method="POST">
                <button class="btn btn-primary" type="submit">Search</button>
            </form>
        </div>
    </div>
</div>

<br>
<div class="row">
    <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}}</td>
                        <td>{{order.product.category}}</td>
                        <td>{{order.date_created}}</td>
                        <td>{{order.status}}</td>
                        <td><a  class="btn btn-outline-info btn-md " href="{% url 'update_order' order.id %}">Update</a></td>
                        <td><a class="btn btn-outline-danger btn-md " href="{% url 'delete_order' order.id %}">Delete</a></td>
                    </tr>
                {% endfor %}
            </table>
        </div>
    </div>
</div>

{% endblock %}
{% extends 'accounts/main.html' %}
{% load static %}
{% block content %}
<div class="row">
    <div class="col-md-6">
        <div class="card card-body">
            <form action="" method="POST">
                {% csrf_token %}
                {{formset.managment_form}} <!-- to remove the managmentForm data missing or has been tempered wiith , error -->
                {% for form in formset %}
                {{formset}}    <!--in context of views.py -->
                <hr>
                {% endfor %}

                <input class="btn btn-outline-success btn-md" type="submit" name="submit">
            </form>
        </div>
    </div>
</div>

{% endblock %}
{%  extends 'accounts/main.html' %}
{% load static %}
{% block content %}


<div class="row">
    <div class="col-md-6">
        <div class="card card-body">

            <form action="" method="POST">
                {% csrf_token %}
                {{ form.management_form }}
                {% for field in form %}
                    {{field}}
                    <hr>
                {% endfor %}

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

        </div>
    </div>
</div>


{% endblock %}

然后我得到一个错误,否则上面的路径就不会有这样的错误。

我不知道是什么问题,只是用相同的上下文替换了GitHub中的文件url.py,它没有显示错误

url.py

from django.urls import path
from . import views


urlpatterns = [
    path('', views.home, name="home"),
    path('products/', views.products, name='products'),
    path('customer/<str:pk_test>/', 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"),


]
def createOrder(request, pk):
    OrderFormSet = inlineformset_factory(Customer, Order , fields=('product','status'), extra=9)
    customer = Customer.objects.get(id=pk)
    formset = OrderFormSet(queryset=Order.objects.none(), instance=customer)
    #form = OrderForm(initial={'customer':customer})
    if request.method == 'POST':
        #print('printing post', request.POST)
        formset = OrderFormSet(request.POST, instance=customer)
        if formset.is_valid():
            formset.save()
            return redirect('/')

    context = {'formset': formset}
    #return redirect('accounts/order_form.html', context)
    return render(request, 'accounts/order_form.html', context)
class Customer(models.Model):
    name = models.CharField(max_length=200, null=True, blank=True)
    phone = models.CharField(max_length=200, null=True, blank=True)
    email = models.CharField(max_length=200, null=True, blank=True)
    date_created = models.DateTimeField(auto_now_add=True, null=True)

    def __str__(self):
        return self.name
from django.urls import path
from . import views
urlpatterns = [
    path('', views.home, name="home"),
    path('products/', views.products, name='products'),
    path('customer/<str:pk_test>/', 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"),


]
from django.forms import inlineformset_factory
def createOrder(request, pk):
    OrderFormSet = inlineformset_factory(Customer, Order, fields=('product', 'status'), extra=10 )
    customer = Customer.objects.get(id=pk)
    formset = OrderFormSet(queryset=Order.objects.none(),instance=customer)
    #form = OrderForm(initial={'customer':customer})
    if request.method == 'POST':
        #print('Printing POST:', request.POST)
        #form = OrderForm(request.POST)
        formset = OrderFormSet(request.POST, instance=customer)
        if formset.is_valid():
            formset.save()
            return redirect('/')

    context = {'form':formset}
    return render(request, 'accounts/order_form.html', context)
order\u form.html

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

{% block content %}

<br>
<div class="row">
    <div class="col-md">
        <div class="card card-body">
            <h5>Customer:</h5>
            <hr>
            <a class="btn btn-outline-info btn-sm btn-block" href="">Update Customer</a>
            <a class="btn btn-outline-info  btn-sm btn-block" href="{% url 'create_order' customer.id %}">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 Order</h5>
            <hr>
            <h1 style="text-align: center;padding: 10px;">{{order_count}}</h1>
        </div>
    </div>
</div>

<br>
<div class="row">
    <div class="col">
        <div class="card card-body">
            <form method="POST">
                <button class="btn btn-primary" type="submit">Search</button>
            </form>
        </div>
    </div>
</div>

<br>
<div class="row">
    <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}}</td>
                        <td>{{order.product.category}}</td>
                        <td>{{order.date_created}}</td>
                        <td>{{order.status}}</td>
                        <td><a  class="btn btn-outline-info btn-md " href="{% url 'update_order' order.id %}">Update</a></td>
                        <td><a class="btn btn-outline-danger btn-md " href="{% url 'delete_order' order.id %}">Delete</a></td>
                    </tr>
                {% endfor %}
            </table>
        </div>
    </div>
</div>

{% endblock %}
{% extends 'accounts/main.html' %}
{% load static %}
{% block content %}
<div class="row">
    <div class="col-md-6">
        <div class="card card-body">
            <form action="" method="POST">
                {% csrf_token %}
                {{formset.managment_form}} <!-- to remove the managmentForm data missing or has been tempered wiith , error -->
                {% for form in formset %}
                {{formset}}    <!--in context of views.py -->
                <hr>
                {% endfor %}

                <input class="btn btn-outline-success btn-md" type="submit" name="submit">
            </form>
        </div>
    </div>
</div>

{% endblock %}
{%  extends 'accounts/main.html' %}
{% load static %}
{% block content %}


<div class="row">
    <div class="col-md-6">
        <div class="card card-body">

            <form action="" method="POST">
                {% csrf_token %}
                {{ form.management_form }}
                {% for field in form %}
                    {{field}}
                    <hr>
                {% endfor %}

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

        </div>
    </div>
</div>


{% endblock %}
{%extends'帐户/main.html%}
{%load static%}
{%block content%}
{%csrf_令牌%}
{{form.management_form}}
{%形式的字段为%}
{{field}}

{%endfor%} {%endblock%}

同样,我不知道它为什么会显示此错误以及问题出在哪里,但只是使用GitHub的相同代码重新应用了它,它就工作了。如果有人知道它是如何工作的,那在不久的将来将非常有用。

我知道问题出在哪里


在dashboard.html中,您应该删除包含{%url'create_order'%}

的行。在dashboard中,您应该删除具有create order的行 因为使用了没有id的创建订单url,所以出现了一个错误

我最终得到了错误。 所以,错误就在这里 我们使用的href id{%url'create_order'customer.id%}

这在customer.html中,因此customer.id将获得views.customer提供的值 但是如果你从你的观点来看,顾客, 上下文={'customers':customers,'orders':orders,'orders\u count':orders\u count} 因为我们看了一个教程视频,那个家伙做了一些我们没有做的改变,因为视频中没有显示

他所做的改变是 他将“customers”改为“customer”,现在customer.html的上下文很好
因为现在它知道什么是customer.id

这很有道理,因为如果它有一个参数,你需要指定
pk
参数的值,所以
{%url'create_order'pk=42%}
例如。{%url'create_order'customer.id%}已经指定,问题不在html文件中,它在URL.py中,我不知道为什么其他路径没有显示相同的错误,因为它们有相同的参数至少还有一个,请注意错误中的“无参数”部分。不工作,请检查共享模板?