我有这个:
def logout(request,key):
auth.logout(request)
return HttpResponseRedirect(reverse('airAgency.views.index',args=[key]))
在index
模板中我希望当用户点击链接时,注销视图运行:
<a href="{% url airAgency.views.logout %}">logout</a>
我想将key
参数传递给注销视图,想象一下,我有一个名为agn
的对象,它的WebSite field
将传递到注销视图,s.th就像这样:
<a href="{% url airAgency.views.logout agn.WebSite %}">
想象一下,agn.WebSite的代码值高于mastane
导致此错误:
Caught NoReverseMatch while rendering: Reverse for 'airAgency.views.logout' with arguments '(u'mastane',)' and keyword arguments '{}' not found.
这样做的正确方法是什么?
答案 0 :(得分:1)
捕获NoReverseMatch - 通常意味着url由不正确的参数调用,或者当{%url%}尝试调用指定的url时其他错误。
您需要为urls.py中调用的视图函数定义url模式。并在url模式中指定视图函数。
urls.py
url(r'^logout/(?P<key>[a-zA-Z0-9\-]+)/$', "airAgency.views.logout", name="logout"),
的index.html
<a href="{% url logout agn.WebSite %}">
如果您只是复制粘贴它可能不起作用,因为我不知道确切的项目设置。
关键是要使用urge.py,其中使用正则表达式来创建url的外观模式,然后是需要调用的视图函数,最后是名称,然后可以在模板中使用该名称。 / p>
这一点在basic Django tutorial中解释。