0

urls.py にこの URL があります

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コンテキスト dict を使用して logout_then_login()に送信しようとしていますが、次のようになります。

TypeError at /one/logout/

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

このエラーは、代替を使用した場合にのみ発生します(one|two)。同じビューに対して 2 つの異なる URL を使用する代わりに、この代替手段を使用できないでしょうか? 推奨されますか?

編集:実際の問題が特定され、それに応じて質問が更新されました

4

1 に答える 1

0

あなたのコードは完全に問題ありません。logout_then_loginパラメータを受け入れ、login_url少なくともDjango1.0以降を持っています。エラーがある場合は、プロジェクトの別の場所で発生しています。完全なトレースバックを投稿すると役立つ場合がありますが、一般に、コード内で渡されている他の場所を探す必要がありlogin_urlます。おそらくオーバーライドです。

アップデート

そこにある括弧で囲まれたグループがキャプチャされ、引数としてメソッドに渡されます。キャプチャしないグループを使用する必要があります。例:

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