Я хотел бы ограничить доступ к URL-адресам, которые обслуживаются общими представлениями django. Я исследовал декоратор, требующий входа в систему, но добился лишь частичного успеха в том, чтобы заставить его работать, поскольку у меня есть сложность, которая не рассматривается в документах (или, по крайней мере, я не смог ее найти).
Перед добавлением декоратора в urls.py у меня есть следующее:
url(r'^search/(?P<search_type>\w+)', search)
Вышеупомянутая функция поиска немного сложна тем, что в зависимости от различных условий она будет отображать одну из четырех возможных html-страниц.
Я не вижу в документах способа обработки нескольких html-страниц с помощью декоратора и не могу понять правильный синтаксис.
Я попытался использовать декоратор с одной из четырех html-страниц, и он работает для этой одной html-страницы:
from django.views.generic import TemplateView
url(r'^search/(?P<search_type>\w+)',
login_required(TemplateView.as_view(template_name='search_form.html',), search)),
Но как мне потребовать логин для всех возможных html? Например, я пробовал такие вещи, как:
url(r'^search/(?P<search_type>\w+)',
login_required(TemplateView.as_view(template_name='search_form.html',), TemplateView.as_view(template_name='search_form_manual.html',), search)),
Я также попытался создать подкласс общих представлений:
//в view.py
from django.views.generic import TemplateView
class AboutView(TemplateView):
template_name_1 = "search_form.html"
template_name_2 = "search_form_manual.html"
template_name_3 = "search_results.html"
template_name_4 = "tag_search_results.html"
//в urls.py
from views import AboutView
url(r'^search/(?P<search_type>\w+)',
login_required(AboutView.as_view(template_name_1, template_name_2,), search)),
Но я получаю сообщение об ошибке, что имя_шаблона_1 и имя_шаблона_2 не существует...
Любая помощь приветствуется.
search()
однимTemplateView
, если вам нужно использовать несколько шаблонов. Что не так сurl(r'^search/(?P<search_type>\w+)', login_required(search))
? - person Aya   schedule 27.06.2013