login_required Dekorateur und urlresolver.reverse () in Django
-
06-07-2019 - |
Frage
Ich habe mehrere Ansichten mit @login_required
Dekorateur. Und ich werde django.core.urlresolvers.reverse () Funktion für die Umleitung, um sie verwenden.
Ich schrieb in urls.py:
urlpatterns = ('myapp.views',
'^(?P<key>[-a-zA-Z0-9]+)/some-operation/$', 'some_operation'),
)
und in views.py:
return HttpResponseRedirect(
reverse('myapp.views.some_operation', kwargs={'key': item.key})
)
, so dass some_operation
-View-Funktion hat @login_required
Dekorateur.
Django zeigt die folgende Fehlermeldung:
Reverse for '<django.contrib.auth.decorators._CheckLogin object at 0x866782c>' with arguments '()' and keyword arguments '{'key': u'ab9d7x'}' not found.
Es scheint, dass Django versucht Übereinstimmung zu finden Reverse für login_required Dekorateur Funktion. Wie komme ich von diesem Problem vermieden werden?
Lösung
Ich habe einen anderen Weg gefunden, dies zu tun von Django Dokumentation . Verwenden Sie "genannt url" wie folgt aus:
urlpatterns = ('myapp.views',
url('^(?P<key>[-a-zA-Z0-9]+)/some-operation/$', 'some_operation', name='myapp-some-operation'),
)
und
reverse('myapp-some-operation', kwargs={'key': item.key})
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow