Django:使用正则表达式替代时,logout_then_login()失败

时间:2012-06-18 18:25:31

标签: django authentication url-routing

我在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)时才会出现此错误。我不应该能够使用这个替代方案,而不是两个不同的网址用于同一视图吗?会推荐吗?

编辑:识别出真正的问题并相应地更新问题

1 个答案:

答案 0 :(得分:0)

你的代码非常好; logout_then_login接受login_url参数,至少从此开始使用Django 1.0。如果出现错误,则会导致项目中的其他位置。发布完整的回溯可能有所帮助,但一般来说,您需要在代码中查找传递login_url的任何其他位置,可能是在覆盖中。

<强>更新

捕获括号组并将其作为方法传递给方法。您需要使用非捕获组,例如:

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