1. ホーム
  2. python

[解決済み] Django Generic Views にログインを要求する方法は?

2023-03-07 07:20:35

質問

Django Generic Views で扱う URL へのアクセスを制限したいです。

私の Views では login_required デコレータ が仕事をします。 また、Create/Delete/Update Generic Views では、このデコレータに login_required 引数を取りますが、他のGeneric Viewsでこれを行う方法は見つかりませんでした。

どのように解決するのですか?

Django < 1.5 では、関数を URL でラップしてデコレータを追加することで、一般的なビューをラップすることができます。

from django.contrib.auth.decorators import login_required
from django.views.generic.simple import direct_to_template
urlpatterns = patterns('',
    (r'^foo/$', login_required(direct_to_template), {'template': 'foo_index.html'}),
    )

関数ベースの汎用ビューは Django 1.4 で非推奨となり、Django 1.5 で削除されました。しかし、同じ原理が適用され、クラスベースのビューのビュー関数を login_required デコレータでラップするだけです。

login_required(TemplateView.as_view(template_name='foo_index.html'))