我的URL配置包含此图案:

url(r'^accounts/logout/$','django.contrib.auth.views.logout', name="logout"),

和我一直试图扭转在与这样的URL标签模板:

<a href="{% url logout next_page=request.path %}">logout</a>

不过,我不断收到以下错误:

Reverse for 'logout' with arguments '()' and keyword arguments '{'next_page': u'/first-page/child/'}' not found

我想django.contrib.auth.views.logout应该采取的选项next_page参数。我敢肯定,我失去了一些东西很明显,但我不知道它是什么。

有帮助吗?

解决方案

是的,你说得对,django.contrib.auth.views.logout不接受可选的“next_page”参数,但不要忘记,“URL”标签匹配URLconf的模式,而不是意见,所以它不知道什么是或不是一个视图的参数。因此,这意味着你需要“next_page”的正则表达式为上面的图案,你可以做一个命名组,但有处理重定向一个更简单的方法...

django.contrib.auth寻找.views.logout ,你可以看到,在没有“next_page”参数,有观点重定向URL无论在任或request.GET中使用request.POST键“redirect_field_name”提供给,一个参数,默认为“REDIRECT_FIELD_NAME”这又默认字符串“下一步”。所以离开你的URLconf事情是这样的,你可以做这样的事情在你的模板:

<a href='{% url logout %}?next={{ request.path }}'>logout</a>

其他提示

基本上Django的URL调度员正在研究URL配置和参数,并说:“我不知道在哪里把这个说法”,因为它不看的视图功能的URL指向,只有URL配置和模式在它

现在有一个在为这样的说法你的URL模式的地方。

即。如果从它的默认URL模式编写自己的模式进行,或者如果您从自己的视图调用它,而不是你可以调用django.contrib.auth.views.logout与额外的参数。

一这些网址格式的可能为你工作(未测试):

url(r'^accounts/logout/(?P<next_page>.*)?$','django.contrib.auth.views.logout', name="logout"),
url(r'^accounts/logout/$','django.contrib.auth.views.logout', kwargs={'next_page':None}, name="logout"),

希望帮助!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top