Djangoのlogin_requiredデコレータとurlresolver.reverse()
-
06-07-2019 - |
質問
@login_required
デコレータを使用したビューがいくつかあります。そして、それらにリダイレクトするためにdjango.core.urlresolvers.reverse()関数を使用します。
urls.pyに書き込みました:
urlpatterns = ('myapp.views',
'^(?P<key>[-a-zA-Z0-9]+)/some-operation/
and views.py:
return HttpResponseRedirect(
reverse('myapp.views.some_operation', kwargs={'key': item.key})
)
some_operation
ビュー関数には @login_required
デコレーターがあります。
Djangoは次のエラーを表示します:
Reverse for '<django.contrib.auth.decorators._CheckLogin object at 0x866782c>' with arguments '()' and keyword arguments '{'key': u'ab9d7x'}' not found.
Djangoはlogin_requiredデコレータ関数の逆マッチを見つけようとしているようです。この問題を回避するにはどうすればよいですか?
, 'some_operation'),
)
and views.py:
<*> some_operation
ビュー関数には @login_required
デコレーターがあります。
Djangoは次のエラーを表示します:
<*>Djangoはlogin_requiredデコレータ関数の逆マッチを見つけようとしているようです。この問題を回避するにはどうすればよいですか?
解決
Djangoドキュメントから、これを行う別の方法を見つけました。 「名前付きURL」を使用このような:
urlpatterns = ('myapp.views',
url('^(?P<key>[-a-zA-Z0-9]+)/some-operation/
and
reverse('myapp-some-operation', kwargs={'key': item.key})
, 'some_operation', name='myapp-some-operation'),
)
and
<*>所属していません StackOverflow