0

我在 urls.py 上有这个网址

url(r'^login/$', 'django.contrib.auth.views.login',
    {'template_name':'login.html'}),

url(r'^(one|two)/logout/$', 'django.contrib.auth.views.logout_then_login',
    {'login_url':'/login/'})

我正在尝试login_url使用上下文字典发送到 logout_then_login() ,但这给出了:

TypeError at /one/logout/

logout_then_login() got multiple values for keyword argument 'login_url'

此错误仅在使用替代时发生(one|two)。我不应该能够使用这种替代方法,而不是为同一视图使用两个不同的网址吗?会推荐吗?

编辑:发现真正的问题并相应更新问题

4

1 回答 1

0

您的代码非常好;logout_then_login接受一个login_url参数,并且至少从 Django 1.0 开始。如果有错误,它是在您的项目中的其他地方引起的。发布完整的回溯可能会有所帮助,但通常,您需要在代码中查找login_url正在传递的任何其他位置,也许是在覆盖中。

更新

那里的括号组被捕获并作为 arg 传递给方法。您需要使用非捕获组,例如:

url(r'^(?:one|two)/logout/$', 'django.contrib.auth.views.logout_then_login',
{'login_url':'/login/'})
于 2012-06-18T21:17:28.737 回答