【问题标题】:Getting another error in Django: Caught NoReverseMatch error in django在 Django 中出现另一个错误:在 django 中捕获 NoReverseMatch 错误
【发布时间】:2011-07-01 22:29:02
【问题描述】:

我似乎在 Django 中传递参数时遇到了另一个问题。我似乎收到了 Caught NoReverseMatch 错误。

Caught NoReverseMatch while rendering: Reverse for 'tiptop.views.service_order2' with arguments '('', 17L, 1)' and keyword arguments '{}' not found

它到达了client_id 和service_type,但没有到达order_no。我不太确定出了什么问题,但它抱怨 order.pk 参数。

#urls
(r'^quote/service_order/(?P<client_id>\d+)/(?P<order_no>\d+)/(?P<request_type>\d+)/$', views.service_order2),

#views.py
def service_order2(request, client_id = 0, order_no = 0, request_type = 1):
    # A lot of code
    order=request.session['order']
    return render_to_response('service_step1__2nd.html', {'contacts':contacts, 'addresses':addresses, 'title':title, 'service_list':service_list, 'date_type':date_type, 'address_type':address_type, 'order':order}, context_instance = RequestContext(request))

此模板包含模板标签链接,假设转到 service_step1__2.html 模板

<input type="submit" value="Request Delivery" onclick="change_action('{% url tiptop.views.service_order2 order.pk client.pk 1 %}')"/>

【问题讨论】:

    标签: python html django url views


    【解决方案1】:

    无论出于何种原因,您的 order 对象没有 pk 值 - 大概是一个未保存的新实例。因此,它将一个空字符串作为第一个参数传递给 URL,并且无法匹配您的 service_order2 url,该 URL 需要在该位置有一个数字。

    【讨论】:

    • 唯一的问题是它以前工作过。我之前在 order.pk 上也遇到过类似的问题,但我解决了这个问题,因为我的 html 模板标签中缺少 order.pk。见 [stackoverflow.com/questions/5066337/…
    • 显然order.pk 没有返回值。先解决这个问题。一旦你解决了这个问题,你就会遇到第二个问题,因为你的视图需要 client.pk 然后 order.pk
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 1970-01-01
    • 2015-07-27
    • 1970-01-01
    • 2015-10-24
    • 2017-08-05
    • 1970-01-01
    相关资源
    最近更新 更多