2015-05-20 4 views
0

У меня есть url(r'^manager/', include('manager.urls')), и я хочу, чтобы только зарегистрированные пользователи могли получить к нему доступ. Таким образом, я пытался писать url(r'^manager/', login_required(include('manager.urls'))), но он бросаетlogin_required decorator для URL-адресов всего приложения

TypeError at /manager/ 

'tuple' object is not callable 

Есть другой способ его реализации, или я должен написать @login_required декоратора для каждого представления в manager.views.py?

ответ

0

login_required является декоратором, что означает, что для него требуется функция, в отличие от функции include(), которая возвращает кортеж URL-адресов.

В качестве простого решения я бы рекомендовал применить декоратор на каждом отдельном URL-адресе в файле managers.url.

В противном случае взгляните на Best way to make Django's login_required the default.

+0

сожаление ... как насчет DRY? :( – Andrew

+0

Хорошо, я отредактировал его для вас, чтобы получить некоторые не очень элегантные альтернативы. Но вы действительно хотите вовлечься в то, что мне интересно. Лично я не нахожу «login_required» на каждом URL-адресе повторение, чтобы беспокоить себя. – Wtower

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