2017-03-07 6 views
1

私はDjango 1.10にダッシュボードアプリケーションを持っています。このアプリのビューへのアクセスを管理者のみに制限したいと思います。ユーザーがログインしていない場合は、管理者のログインページにリダイレクトします。Djangoでは管理者だけがビューにアクセスできます

私はadminユーザーのみが/ダッシュボードで始まる/

URL(R「^ダッシュボード/」、 '(demo.dashboardを含めるリンクを参照してくださいすることができるように、論理のいくつかの種類を適用したい場所です.urls'、名前空間= 'ダッシュボード'))

答えて

1

あなたはuser_passes_testデコレータを使用する必要があります。

def check_admin: 
    return user.is_superuser 

@user_passes_test(check_admin) 
def my_view(request): 
    ... 
1

あなたがのいずれかで個々のビューを飾るために持っていますデコレータ、または@staff_member_requiredデコレータ。おそらく後者の、ドキュメントの状態として:あなたはDjangoの管理(または内蔵のビューが使用するのと同じ認可チェックを必要とする)のためのカスタムビューを作成している場合

、あなたが役に立つdjango.contrib.admin.views.decorators.staff_member_required()デコレータを見つけることができますlogin_required()の代替品です。

+0

マイダッシュボードには、約20-25のビューが多数あります。各ビューにデコレータを適用する必要がありますか。方法はありません、私は1つの場所でデコレータを適用することができますか? – ujjwalwahi

+0

個別に宣言するのはもっと難しいです。私たちは約40〜50のカスタム管理ビューを持っており、それが私たちの対処方法です。また、固有の権限レベルを持っているため、各ビューは '@ staff_member_required'デコレータと' @ superuser_required'または '@permission_required( 'some_model.some_permission')'で装飾されています。はるかに簡単で、私はより安全と主張します。 – YellowShark

+0

アドバイスをいただきありがとうございます。 – ujjwalwahi

関連する問題