2009-06-23 51 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

相關問題