我正在学习Django,而且我已经陷入了#No; NoReverseMatch"错误。我试图了解如何修复错误,以及错误实际意味着什么。 Django正试图在路线中找到与给定网址相反的模式?
NoReverseMatch at /customers/3/
Reverse for 'customer' with arguments '('',)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['customers/(?P<customer_id>[0-9]+)/$']
urls.py
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^customers/(?P<customer_id>[0-9]+)/$', views.customer, name='customer'),
]
[更新] ......这显然是从模板中触发的:
<form action="{% url 'customer' customer.id %}" method="post" class="form">
{% csrf_token %}
{% bootstrap_form form %}
{% buttons %}
<button type="submit" class="btn btn-primary">
{% bootstrap_icon "star" %} Submit
</button>
{% endbuttons %}
</form>
...和视图代码:
def customer(request, customer_id):
c = get_object_or_404(Customer, pk=customer_id)
context = {'customer': customer}
return render(request, 'customers/edit.html', context)
答案 0 :(得分:1)
确保您将customer
从视图传递到模板上下文。
追溯的这一部分
with arguments '('',)'
表示customer.id
正在评估''
,而不是像您期望的3
这样的ID。
答案 1 :(得分:1)
错误NoReverseMatch
表示找不到您正在尝试的网址的网址格式。检查customer.id
的值。发布您的customer
视图可能会有所帮助。