在模板中使用它的url时传递视图参数

时间:2011-11-05 15:58:20

标签: python django

在views.py中的

我有这个:

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.

这样做的正确方法是什么?

1 个答案:

答案 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中解释。