Вопрос по – Django: кнопка «Скрыть» в шаблоне, если пользователь не является суперпользователем

31

Как вы получаете ваш шаблон / представление, чтобы узнать, является ли зарегистрированный пользователь суперпользователем или нет?

В моих формах (в шаблоне) есть определенные кнопки, которые я хочу полностью скрыть, если пользователь не является суперпользователем

Как бы вы поступили так?

Ваш Ответ

2   ответа
73

is_superuser наUser объект:

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

EDIT: после @ mustafa-0x комментариев

Вышесказанное предполагает, что у вас естьdjango.core.context_processors.request включены в вашTEMPLATE_CONTEXT_PROCESSORS установкаwhich isn't the default.

настройка по умолчанию для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 }}

Разве это не проверяет, прошел ли пользователь аутентификацию? Мне нужно знать, если они супер пользователь JohnnyCash
Интересно, если бы is_superuser добился цели ... JohnnyCash
@ TimmyO, Махони, код не работает, и ссылка не работает ... не могу объяснить, почему вы отклонили редактирование?
извините, вставьте неправильный - я изменил его сейчас
отлично :) я тоже попробовал! Спасибо JohnnyCash
5

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 что может быть более уместным.

Похожие вопросы