管理者ユーザーがログインしているかどうかを、ビューまたはテンプレートファイルからどのように検出できますか?たとえば、私のサイトのユースケース:
- ユーザーが開き
/admin/
、正しいクレデンシャルを入力します - 次に、ユーザーがページを開くと、たとえば
/page/
、[追加]ボタンと[削除]ボタンがあります - ユーザーが開き
/admin/
、[ログアウト]をクリックします /page/
->「追加」ボタンと「削除」ボタンはありません
Djangoバージョン1.4
管理者ユーザーがログインしているかどうかを、ビューまたはテンプレートファイルからどのように検出できますか?たとえば、私のサイトのユースケース:
/admin/
、正しいクレデンシャルを入力します/page/
、[追加]ボタンと[削除]ボタンがあります/admin/
、[ログアウト]をクリックします/page/
->「追加」ボタンと「削除」ボタンはありませんDjangoバージョン1.4
テンプレート内:
{% if user.is_superuser %}
<p>Hello, admin.</p>
{% else %}
<p>Hello, ordinary visitor.</p>
{% endif %}
ビューで:
if request.user.is_superuser:
# Hello, admin.
else:
# Hello, ordinary visitor.
ニーズによってはis_staff
、 よりも適している場合がありis_superuser
ます。違いについてはこちらをご覧ください。
ジョセフの答えはあなたの単純なケースでは問題ありませんが、実際にはどちらis_staff
もis_superuser
完全に適合していません。たとえば、ページが(というアプリ内のオブジェクト/polls/
のリスト) であると仮定すると、特定のおよびパーミッションをテストする必要があります。Poll
poll
poll.change_poll
poll.delete_poll
テンプレートでは:
{% for poll in polls %}
{% if perms.poll.change_poll %}<a href='/polls/edit/{{ poll.id }}'>Edit</a>{% endif %}
{% if perms.poll.delete_poll %}<a href='/polls/delete/{{ poll.id }}'>Delete</a>{% endif %}
{% endfor %}
またはを使用has_perm
してビューで:
if not request.user.has_perm('poll.change_poll'):
return HttpResponseForbidden('Nope!')
または、デコレータを使用したビューで:
@permission_required('poll.change_poll')
def edit_poll(request, poll_id):
# ....
これらのアクセス許可は、ユーザー、グループに直接割り当てる (そして、ユーザーをそのグループに入れる) か、または を設定して割り当てることができますis_superuser
。