2009-06-26 10 views
4

ユーザが所属するユーザグループに割り当てられた権限に従ってユーザメニューを変更する方法はありますか?私は、ビューレベルでこれらの権限をチェックする何かを考えているし、ユーザーが権限を持っていないメニューオプションも削除します。Djangoの動的ユーザメニュー

答えて

9

はい、テンプレート内のユーザーオブジェクトにアクセスし、ユーザーがスタッフはこのようなものですかどうかを確認することが可能です:

{% if user.is_staff %} 
    <li> 
     <a href="/admin/">Admin</a> 
    </li> 
{% endif %} 

これは、リンク先のメニュー項目の例です。管理リンクは、is_staffステータスのユーザーに対してのみレンダリングされます。 is_authenticatedでも同じことができます。

Djangoはロジックとプレゼンテーションを分離してビルドしていますので、メニューの細かい制御をしたい場合は、ビュー内でロジックを行い、チェックインできる変数を設定することをお勧めしますどのメニューを表示するかを決定するためのテンプレート

+0

私はこれらの行に沿って考えていました...クイックヘルプのおかげで –

+0

これは別のメニューのきちんとしたプレゼンテーションです。ユーザーvs管理者セキュリティーの手段ではなく、正確です。人々はまだ "/ admin"を含むURLを与えることができます... "@staff_member_required"や "@login_required"のようなビューデコレータを見ることを心がけてください。 – GerardJP

2

djangoの管理者は、あなたができないことへのリンクをすでに提供していません。それがある場合

ジャンゴ・グラッペリ(Aジャンゴ管理者の肌が)あなたが何を意味するか、ブックマークのいくつかの並べ替えを実装しhttp://code.google.com/p/django-grappelli/