質問
ログインするには、スーパーユーザーのみが必要なdjangoページを作成しました。だから私は追加しました
foo_view = staff_member_required(foo_view)
しかし、カットされません。今では、マークされたユーザーのみがログインできるように制御できますが、これはカットされません。私は次のようなものを試しました
def foo_view(request):
if not request.user.is_superuser:
#render some "not allowed page"
#else render the page
しかし、それは私にエラーを与える助けにはならないようです。
解決
試してください:
from django.contrib.auth.decorators import user_passes_test
def foo_view(request):
# ...
foo_view = user_passes_test(lambda u: u.is_superuser)(foo_view)
または(Python> = 2.4の場合):
from django.contrib.auth.decorators import user_passes_test
@user_passes_test(lambda u: u.is_superuser)
def foo_view(request):
# ...
他のヒント
あなたが提案したコードは私にとって完璧に機能します。私はDjango 1.4以降の多くのプロジェクトでそれを使用しました:
from django.contrib.auth.decorators import login_required
from django.http import HttpResponse
@login_required
def foo_view(request):
if not request.user.is_superuser:
return HttpResponse('The user is not superuser')
# Do whatever you need to do
このコードは、少なくともDjango 1.4から1.7以降で私には最適です。
上記の回答は、ごく初期のバージョンのdjango向けです。より新しいバージョンよりも少し複雑です
django 1.11の場合、これは少し似ていますが、より単純な戦略です。 ここをクリック
所属していません StackOverflow