Respuesta

57

Salida is_superuser en el User objeto:

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

EDIT: después @ Mustafa-0x comenta

Lo anterior supone que tiene django.core.context_processors.request incluido en su TEMPLATE_CONTEXT_PROCESSORS establecer cuales no es el valor predeterminado.

El 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', 
) 

ya incluye el django.contrib.auth.context_processors.auth (y en particular no incluye el procesador request contexto) lo que significa que en la mayoría de los casos ya tendrá acceso a {{ user }} sin la necesidad de añadirlo a su contexto través de la vista, o habilitar el procesador request contextual para acceder al usuario que el anterior a través de {{ request.user }}

+0

¿No es eso solo comprobar si el usuario ha sido autenticado? Necesito saber si son un súper usuario – JohnnyCash

+1

Me pregunto si is_superuser haría el truco ... – JohnnyCash

+0

lo siento, pongo el incorrecto - Lo he cambiado ahora –

3

como se discutió en los comentarios, puede utilizar el objeto que es User disponibles en las plantillas de forma automática:

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

También puede utilizar user.is_staff que podría ser más apropiado.

Cuestiones relacionadas