Comment obtenez-vous votre modèle/vue pour reconnaître si un utilisateur connecté est ou non un super utilisateur?
Il y a certains boutons sur mes formulaires (dans le modèle) que je veux complètement masqués si l'utilisateur n'est pas un super-utilisateur
Comment vous y prendriez-vous?
Check-out is_superuser
sur l'objet User
:
{% if request.user.is_superuser %}
...
<button>...</button>
...
{% else %}
...
{% endif %}
EDIT: après les commentaires @ mustafa-0x
Ce qui précède suppose que vous avez Django.core.context_processors.request
inclus dans votre TEMPLATE_CONTEXT_PROCESSORS
paramètre qui n'est pas la valeur par défaut .
paramètre par défaut pour 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',
)
comprend déjà le Django.contrib.auth.context_processors.auth
(et n'inclut notamment pas le processeur de contexte request
) ce qui signifie que dans la plupart des cas, vous aurez déjà accès à {{ user }}
sans avoir besoin de l'ajouter à votre contexte via la vue, ou d'activer le processeur de contexte request
pour accéder à l'utilisateur comme ci-dessus via {{ request.user }}
Comme expliqué dans les commentaires, vous pouvez utiliser automatiquement l'objet User
qui est disponible dans les modèles:
{% 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 %}
Vous pouvez aussi utiliser user.is_staff
qui pourrait être plus approprié.
En fait, lorsque vous essayez de vérifier la météo du modèle HTML de connexion, l'utilisateur est superutilisateur ou non, vous ne pourrez pas le faire car, dans ce cas précis, ce sera faux, vous pouvez le vérifier dans le fichier views.py, cet utilisateur est super ou pas puis redirigez-la où vous voulez. vous pouvez faire quelque chose comme ça comme vous pouvez le voir dans la fonction de démarrage