decorador login_required y urlresolver.reverse () en Django
-
06-07-2019 - |
Pregunta
Tengo varias vistas con el decorador @login_required
. Y voy a usar la función django.core.urlresolvers.reverse () para redirigirlos a ellos.
Escribí en urls.py:
urlpatterns = ('myapp.views',
'^(?P<key>[-a-zA-Z0-9]+)/some-operation/
y en views.py:
return HttpResponseRedirect(
reverse('myapp.views.some_operation', kwargs={'key': item.key})
)
de modo que la función de visualización some_operation
tenga un decorador @login_required
.
Django muestra el siguiente error:
Reverse for '<django.contrib.auth.decorators._CheckLogin object at 0x866782c>' with arguments '()' and keyword arguments '{'key': u'ab9d7x'}' not found.
Parece que Django está tratando de encontrar una coincidencia inversa para la función decoradora login_required. ¿Cómo me evito este problema?
, 'some_operation'),
)
y en views.py:
<*> de modo que la función de visualización some_operation
tenga un decorador @login_required
.
Django muestra el siguiente error:
<*>Parece que Django está tratando de encontrar una coincidencia inversa para la función decoradora login_required. ¿Cómo me evito este problema?
Solución
He encontrado otra forma de hacerlo desde documentación de Django . Utilice " nombre url " así:
urlpatterns = ('myapp.views',
url('^(?P<key>[-a-zA-Z0-9]+)/some-operation/
y
reverse('myapp-some-operation', kwargs={'key': item.key})
, 'some_operation', name='myapp-some-operation'),
)
y
<*>