2009-06-23 2 views
0

У меня есть несколько представлений с @login_required декоратора. И я буду использовать функцию django.core.urlresolvers.reverse() для перенаправления к ним.login_required декоратор и urlresolver.reverse() в Django

я писал в 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 декоратора.

Джанго показывает следующее сообщение об ошибке:

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. Используйте "под названием 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}) 
+0

Как вы можете передать дополнительные kwargs в @login_required декоратора? Я не могу это сделать – Philip007

+0

какую версию Django вы использовали? Может ли это быть достигнуто с помощью шаблона tempatetag? – acrespo

Смежные вопросы