decoratore login_required e urlresolver.reverse () in Django
-
06-07-2019 - |
Domanda
Ho diverse visualizzazioni con il decoratore @login_required
. E userò la funzione django.core.urlresolvers.reverse () per il reindirizzamento a loro.
Ho scritto in urls.py:
urlpatterns = ('myapp.views',
'^(?P<key>[-a-zA-Z0-9]+)/some-operation/
e in views.py:
return HttpResponseRedirect(
reverse('myapp.views.some_operation', kwargs={'key': item.key})
)
tale che la funzione di visualizzazione some_operation
ha il decoratore @login_required
.
Django mostra il seguente errore:
Reverse for '<django.contrib.auth.decorators._CheckLogin object at 0x866782c>' with arguments '()' and keyword arguments '{'key': u'ab9d7x'}' not found.
Sembra che Django stia cercando di trovare una corrispondenza inversa per la funzione decoratore richiesta da login_required. Come posso evitare questo problema?
, 'some_operation'),
)
e in views.py:
<*> tale che la funzione di visualizzazione some_operation
ha il decoratore @login_required
.
Django mostra il seguente errore:
<*>Sembra che Django stia cercando di trovare una corrispondenza inversa per la funzione decoratore richiesta da login_required. Come posso evitare questo problema?
Soluzione
Ho trovato un altro modo per farlo dalla Documentazione di Django . Usa " url denominato " in questo modo:
urlpatterns = ('myapp.views',
url('^(?P<key>[-a-zA-Z0-9]+)/some-operation/
e
reverse('myapp-some-operation', kwargs={'key': item.key})
, 'some_operation', name='myapp-some-operation'),
)
e
<*>