我想限制对 django 通用视图提供的 url 的访问。我已经研究了登录所需的装饰器,但在让它工作方面只取得了部分成功,因为我有一个文档中没有解决的并发症(或者至少我找不到它)。
在添加装饰器之前,在 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)),
但是我得到了 template_name_1 和 template_name_2 不存在的错误......
任何帮助表示赞赏。