2010-02-07 6 views
11

J'ai créé une liste de 5 utilisateurs. Comment puis-je savoir quel utilisateur s'est connecté actuellement? S'il vous plaît mentionner, s'il y a un moyen de savoir si le super-utilisateur s'est connecté?Découvrez l'utilisateur actuellement connecté dans Django

Mon exigence est, je veux limiter l'accès de certaines pages dans les modèles seulement au super-utilisateur.

Répondre

16

utilisateur actuel est dans l'objet de la demande:

def my_view(request): 
    current_user = request.user 

Il est classe django.contrib.auth.models.User et il a quelques champs, par exemple

  • is_staff - Booléen. Indique si cet utilisateur peut accéder au site d'administration.
  • is_superuser - Booléen. Indique que cet utilisateur dispose de toutes les autorisations sans les affecter explicitement.

http://docs.djangoproject.com/en/1.1/topics/auth/#django.contrib.auth.models.User

Donc, pour vérifier si l'utilisateur actuel est super-utilisateur, vous pouvez:

if user.is_active and user.is_superuser: 
    ... 

Vous pouvez l'utiliser dans le modèle ou passer à ce modèle comme variables par le contexte.

+0

Excellent. Ça a marché . Merci beaucoup ! U rock !! –

3

On dirait que vous devriez utiliser le built-in permissions system pour cela.

+0

Est-ce que Django stocker le nom de l'utilisateur actuellement connecté dans un attribut, pour que je puisse donner accès à mes pages basées sur ce (je suis nouveau à django) –

+1

L'utilisateur est stocké dans 'request.user'. De là, il suffit d'accéder aux attributs du modèle 'User'. –

+0

c'est ce que je cherchais !! Merci beaucoup . –

0

Découvrez le décorateur user_passes_test pour vos commentaires. extraits Django a un décorateur connexe:

Ces décorateurs sont basés sur user_passes_test et permission_required, mais lorsqu'un utilisateur est connecté et échoue au test, il rend une erreur 403 au lieu de redirection pour vous connecter - seuls les utilisateurs anonymes seront invités à se connecter.

http://www.djangosnippets.org/snippets/254/

Questions connexes