DjangoでURL パターンを権限によって制限する

2024年6月23日

URL パターンを権限によって制限するには、Djangoの user_passes_test デコレータを使うことができます。以下は、URL パターンを制限する例です:

python
# views.py

from django.contrib.auth.decorators import user_passes_test
from django.shortcuts import render
from django.urls import path
from . import views

def has_access_your_feature(user):
    return user.has_perm('your_app.can_access_your_feature')

urlpatterns = [
    path('your-protected-view/', user_passes_test(has_access_your_feature)(views.your_protected_view), name='your_protected_view'),
    # 他の URL パターンをここに追加
]

この例では、your-protected-view/ という URL パターンを has_access_your_feature テスト関数によって保護しています。テスト関数が True を返す場合、ユーザーはそのビューにアクセスできます。テスト関数が False を返す場合、user_passes_test デコレータはユーザーをログインページにリダイレクトします。

can_access_your_feature はあらかじめユーザーに与えられた権限です。必要に応じて、権限を管理者サイトで追加してください。

なお、これは URL パターンごとの権限制御です。特定のビュー内での条件に基づく権限制御が必要な場合は、ビュー内で user_passes_test デコレータを直接使うこともできます。

未分類

Posted by ぼっち