django ジェネリック ビューによって提供される URL へのアクセスを制限したいと思います。ログインが必要なデコレータを調査しましたが、ドキュメントで対処されていない複雑な問題があるため (または少なくとも見つけることができなかったので)、機能させるのに部分的な成功しかありませんでした。
デコレータを追加する前に、urls.py には次のものがあります。
url(r'^search/(?P<search_type>\w+)', search)
上記の検索機能は、さまざまな条件に応じて、可能な 4 つの html ページのいずれかをレンダリングするという点で少し複雑です。
デコレータを使用して複数の html ページを処理する方法がドキュメントに表示されず、正しい構文を理解できないようです。
4 つの HTML ページのいずれかでデコレータを使用してみましたが、その 1 つの 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 が存在しないというエラーが表示されます...
どんな助けでも大歓迎です。