53

你如何让你的模板/视图识别登录用户是否是超级用户?

如果用户不是超级用户,我希望完全隐藏我的表单(在模板中)上的某些按钮

你会怎么做呢?

4

3 回答 3

113

检查对象is_superuserUser

{% if request.user.is_superuser %}
    ...
    <button>...</button>
    ...
{% else %}
...
{% endif %}

编辑: @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 }}

于 2012-04-08T19:23:12.900 回答
21

正如评论中所讨论的,您可以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可能更合适的。

于 2016-04-16T07:29:47.193 回答
0

实际上,当您尝试检查登录 html 模板天气时,用户是否是超级用户,您将无法这样做,因为在那种情况下,您可以在 views.py 文件中检查用户是否超级用户然后将其重定向到您想要的任何地方。 你可以做一些这样的事情,你可以在 start 函数中看到

于 2019-08-03T13:34:00.483 回答