login_required декоратор и urlresolver.reverse() в Django
-
06-07-2019 - |
Вопрос
У меня есть несколько мнений с @login_required
декоратор.И я собираюсь использовать функцию django.core.urlresolvers.reverse() для перенаправления на них.
Я написал в urls.py:
urlpatterns = ('myapp.views',
'^(?P<key>[-a-zA-Z0-9]+)/some-operation/$', 'some_operation'),
)
и в 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 decorator.Как мне избежать этой проблемы?
Решение
Я нашел другой способ сделать это с помощью Документация Django.Используйте "именованный URL" следующим образом:
urlpatterns = ('myapp.views',
url('^(?P<key>[-a-zA-Z0-9]+)/some-operation/$', 'some_operation', name='myapp-some-operation'),
)
и
reverse('myapp-some-operation', kwargs={'key': item.key})
Не связан с StackOverflow