我有一个名为edit_order的视图,我有另一个名为client_items的视图。
def edit_order(request, order_no)
change_item = order.contact.client
def client_items(request, client_id = 0):
client = None
items = None
try:
client = models.Client.objects.get(pk = client_id)
items = client.storageitem_set.all()
except:
return HttpResponse(reverse(return_clients))
return render_to_response('items.html', {'items':items, 'client':client}, context_instance = RequestContext(request))
在我的编辑订单模板中,我有一个模板标记网址。
<input type="button" value="Edit items" onclick="window.location.href='{% url tiptop.views.client_items change_item.pk %}'" />
这很有效。现在,我想创建另一个视图,它可以使用order_no参数。但由于某种原因这不起作用。我已将此视图称为test_items。
def test_items(request, client_id = 0, order_no=0):
client = None
items = None
try:
client = models.Client.objects.get(pk = client_id)
items = client.storageitem_set.all()
order = models.Order.objects.get(pk = order_no)
except:
return HttpResponse(reverse(return_clients))
return render_to_response('test.html', {'items':items, 'client':client, 'order':order}, context_instance = RequestContext(request))
在我的模板中,我已将网址更改为此。
<input type="button" value="Edit items" onclick="window.location.href='{% url tiptop.views.test_items change_item.pk %}'" />
所以我收到了这个错误。
Caught NoReverseMatch while rendering: Reverse for 'tiptop.views.test_items' with arguments '(17L,)' and keyword arguments '{}' not found.
导致这种情况的原因是order_no参数。但我希望能够使用此参数。有没有办法可以克服这个问题?我希望这一切都有道理。
答案 0 :(得分:1)
那么,你如何传递order_no参数?你的urls.py看起来像什么?在修改后的模板中,您没有将order_no传递给{%url%}标记。如果您的URL regexp需要两个参数(client_id和order_no),那么它将找不到匹配的URL。您可以在urls.py中尝试这样的事情:
urlpatterns = patterns('tiptop.views',
(r'^(\d+)/(\d*)$', 'test_items'),
)
但在你的情况下,将order_no作为GET参数传递可能会更好。