ログインしたユーザーがスーパーユーザーであるかどうかを認識するために、どのようにテンプレート/ビューを取得しますか?
ユーザーがスーパーユーザーでない場合、完全に非表示にしたい(テンプレート内の)フォームに特定のボタンがあります
どうやってそれをやりますか?
User
オブジェクトで is_superuser
をチェックアウトします。
{% if request.user.is_superuser %}
...
<button>...</button>
...
{% else %}
...
{% endif %}
EDIT:@ mustafa-0xコメントの後
上記では、Django.core.context_processors.request
設定にTEMPLATE_CONTEXT_PROCESSORS
が含まれていることを前提としていますが、これはデフォルトではありません。
TEMPLATE_CONTEXT_PROCESSORS
のデフォルト設定 :
TEMPLATE_CONTEXT_PROCESSORS = (
'Django.contrib.auth.context_processors.auth',
'Django.core.context_processors.debug',
'Django.core.context_processors.i18n',
'Django.core.context_processors.media',
'Django.core.context_processors.static',
'Django.core.context_processors.tz',
# 'Django.core.context_processors.request',
'Django.contrib.messages.context_processors.messages',
)
すでにDjango.contrib.auth.context_processors.auth
が含まれています(特にrequest
コンテキストプロセッサは含まれていません)。つまり、ほとんどの場合、コンテキストに追加することなく{{ user }}
にアクセスできます。ビュー経由で、またはrequest
コンテキストプロセッサを有効にして、上記のように{{ request.user }}
経由でユーザーにアクセスします。
コメントで説明したように、テンプレートで自動的に使用可能なUser
オブジェクトを使用できます。
{% if user.is_superuser %}
<div class="alert alert-success" role="alert">
You are logged in as {{user.first_name}}, here are the
<a href="/admin/">admin pages</a> for changing content.
</div>
{% endif %}
より適切なuser.is_staff
を使用することもできます。
実際に、ログインhtmlテンプレートの天気をチェックしようとすると、ユーザーはスーパーユーザーであるかどうかを確認できません。そして、あなたが望む場所にリダイレクトします。 start関数で見ることができるように、このようなことができます