Comment modifier un modèle Django en fonction du groupe de l'utilisateur?
Droit maintenant, j'ai deux différents groupes d'utilisateurs sur mon site: les clients et les entreprises.
Droit maintenant, je suis seulement en utilisant une connexion qui permet à la fois de groupes d'utilisateurs de voir leur page de profil.
Cependant, il ya des parties de la page de profil je veux seulement le Client à voir et à des portions je veux seulement les affaires pour la voir. Comment puis-je aller sur la limitation de ce que chaque groupe voit sur cette page?
Devrais-je le faire dans le modèle avec une sorte de déclaration si? ou est-il une autre solution quelqu'un peut me le faire savoir?
source d'informationauteur chris | 2011-01-02
Vous devez vous connecter pour publier un commentaire.
C'est sans doute trop vieux pour vous à des soins de plus, mais je suis tombé ici moi-même avant d'essayer de le comprendre sur mon propre. Pour la postérité, j'ai trouvé la solution suivante:
À votre avis, ajouter quelque chose comme ceci:
Dans votre modèle:
{% if is_customer %} customer stuff here {% endif %}
Il s'appuie sur le fait qu'un
if
clause dans un modèle sera la valeur false si la liste est vide.Si vous voulez éviter d'ajouter quelque chose à votre avis les fonctions, et que vous utilisez l'authentification contexte processeur (
django.contrib.auth.context_processors.auth
) etRequestContext
comme par @thyagx réponsealors vous pouvez utiliser un modèle extrait comme celui qui est suggéré dans Google Groupes post:C'est un peu verbeux, mais cela signifie que vous n'avez pas à faire quoi que ce soit dans votre point de vue (à part en utilisant
RequestContext
), ou écrire un contexte personnalisé processeur.Ce que j'ai fait pour résoudre ce problème est:
J'ai créé un contexte personnalisé processeur qui, fondamentalement, insère de nouvelles variables que vous utilisez dans vos templates et de l'ajouter à mes paramètres. Voir plus d' @ https://docs.djangoproject.com/en/1.3/ref/templates/api/#django.template.RequestContext:
J'ai continué à écrire la fonction
user_context
à l'intérieur du fichieruser_context
le mien est comme suit:is_local_admin
est juste une fonction qui vérifie si l'utilisateur appartient au groupe des Administrateurs ou non.Chaque fois que j'ai besoin de cette
is_local_admin
informations dans mon template je l'utiliser pour le rendu de mon point de vue, par exemple:L'important est le
RequestContext
qui charge le contexte personnalisé processeur de nous construire dans l'étape 1.Maintenant dans votre modèle, vous pouvez utiliser:
Espère que cela aide quelqu'un. En résumé: prendre un coup d'oeil au contexte personnalisé processeurs, ils sont la peine de le lire.
J'ai mis en œuvre à travers une balise de modèle, basé sur ce que j'ai trouvé ici.
Peut-être il peut être utile à quelqu'un.
Dans utils/utils_extras.py:
Ensuite dans le modèle lui-même: