" NoReverseMatch"的含义在Django

时间:2015-05-20 14:44:33

标签: django

我正在学习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)

2 个答案:

答案 0 :(得分:1)

确保您将customer从视图传递到模板上下文。

追溯的这一部分

with arguments '('',)'

表示customer.id正在评估'',而不是像您期望的3这样的ID。

答案 1 :(得分:1)

错误NoReverseMatch表示找不到您正在尝试的网址的网址格式。检查customer.id的值。发布您的customer视图可能会有所帮助。