login_nécessaire décorateur et urlresolver.reverse () dans Django
-
06-07-2019 - |
Question
J'ai plusieurs vues avec le décorateur @login_required
. Et je vais utiliser la fonction django.core.urlresolvers.reverse () pour les rediriger vers eux.
J'ai écrit dans urls.py:
urlpatterns = ('myapp.views',
'^(?P<key>[-a-zA-Z0-9]+)/some-operation/
et dans views.py:
return HttpResponseRedirect(
reverse('myapp.views.some_operation', kwargs={'key': item.key})
)
tel que la fonction de vue some_operation
possède le décorateur @login_required
.
Django affiche l'erreur suivante:
Reverse for '<django.contrib.auth.decorators._CheckLogin object at 0x866782c>' with arguments '()' and keyword arguments '{'key': u'ab9d7x'}' not found.
Il semble que Django tente de trouver une correspondance inverse pour la fonction décorateur login_required. Comment puis-je éviter ce problème?
, 'some_operation'),
)
et dans views.py:
<*> tel que la fonction de vue some_operation
possède le décorateur @login_required
.
Django affiche l'erreur suivante:
<*>Il semble que Django tente de trouver une correspondance inverse pour la fonction décorateur login_required. Comment puis-je éviter ce problème?
La solution
J'ai trouvé un autre moyen de le faire grâce à documentation Django. . Utilisez " URL nommée " comme ceci:
urlpatterns = ('myapp.views',
url('^(?P<key>[-a-zA-Z0-9]+)/some-operation/
et
reverse('myapp-some-operation', kwargs={'key': item.key})
, 'some_operation', name='myapp-some-operation'),
)
et
<*>