2009-06-23 82 views
0

我用@login_required装饰器有几个视图。我将使用django.core.urlresolvers.reverse()函数重定向到它们。Django中的login_required装饰器和urlresolver.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装饰功能反向匹配。我如何避免这个问题?

回答

4

我发现了另一种方式来从Django documentation做到这一点。使用 “命名的网址” 是这样的:

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}) 
+0

你怎么能传递@login_required装饰额外kwargs?我不能这样做 – Philip007 2013-06-09 10:20:38

相关问题