如何让模板/视图识别登录用户是否是超级用户?
如果用户不是超级用户,我的表单(模板中)上有某些按钮我希望完全隐藏
你会怎样做?
查看 is_superuser
对象上的
User
:
{% if request.user.is_superuser %}
<button></button>
{% else %}
{# ... #}
{% endif %}
编辑:@mustafa-0x 评论后
以上假设您的
django.core.context_processors.request
设置中包含 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
,这可能更合适。