Odpowiedz

57

Wyjazd is_superuser na obiekcie User:

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

EDIT: po @ Mustafa-0x komentuje

Powyższe zakłada, że ​​masz django.core.context_processors.request zawarte w ustawieniach TEMPLATE_CONTEXT_PROCESSORS który nie jest domyślnym.

default setting for 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', 
) 

już zawiera django.contrib.auth.context_processors.auth (a zwłaszcza nie zawiera procesor request kontekstowe), co oznacza, że ​​w większości przypadków będziesz już mieć dostęp do {{ user }} bez konieczności dodać go do kontekst za pośrednictwem widoku lub włącz procesor kontekstowy, aby uzyskać dostęp do użytkownika jak wyżej poprzez {{ request.user }}

+0

czy to nie wystarczy sprawdzić, czy użytkownik został uwierzytelniony? Muszę wiedzieć, czy są superużytkownikiem. – JohnnyCash

+1

Zastanawiam się, czy is_superuser zrobiłby jakąś sztuczkę .. – JohnnyCash

+0

Przepraszam, wstawiłem niewłaściwą - zmieniłem ją teraz –

3

Jak wspomniano w komentarzach, można użyć obiektu o numerze: User dostępny w szablonach automatycznie:

{% 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 %} 

Można również użyć user.is_staff co może być bardziej odpowiednie.

Powiązane problemy