我有 @login_required 装饰器的几个视图。我将使用django.core.urlresolvers.reverse()函数重定向到它们。

我在urls.py中写道:

urlpatterns = ('myapp.views',
    '^(?P<key>[-a-zA-Z0-9]+)/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装饰器函数找到反向匹配。如何避免这个问题?

, 'some_operation'), )

并在views.py中:

<*>

使 some_operation 视图函数具有 @login_required 装饰器。

Django显示以下错误:

<*>

似乎Django正在尝试为login_required装饰器函数找到反向匹配。如何避免这个问题?

有帮助吗?

解决方案

我从 Django文档中找到了另一种方法。使用“named url”像这样:

urlpatterns = ('myapp.views',
    url('^(?P<key>[-a-zA-Z0-9]+)/some-operation/

reverse('myapp-some-operation', kwargs={'key': item.key})
, 'some_operation', name='myapp-some-operation'), )

<*>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top