utiliser les variable de session

depuis une Class Based View (CBV)

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour,

Est-ce que quelqu'un sait comment accéder a "user.id" depuis une CBV?

Normalement pour une def il aurait suffit de marquer user.id directement et sans import, mais pour une class ça a l'air plus différent.

Je n'arrive pas a récupérer l'id de mon utilisateur est c'est assez frustrant!

Merci!

Édité par Coyote

J’adorerais changer le monde, mais ils ne veulent pas me fournir le code source…

+0 -0

Si tu utilise les CBV, tu dois redéfinir la fonction get_context_data(), comme suis (exemple tiré de la ZEP-12):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
class ValidationListView(ListView):

    template_name = "tutorialv2/validation/index.html"
    # [...]

    def get_context_data(self, **kwargs):
        context = super(ValidationListView, self).get_context_data(**kwargs)

        if 'subcategory' in self.request.GET:
            context['category'] = get_object_or_404(SubCategory, pk=self.request.GET["subcategory"])

        return context

Et dès lors, dans ta tempate, la variable {{ category }} renverra bien ce que tu lui à demandé ;)

Note bien le context = super(ValidationListView, self).get_context_data(**kwargs) (à adapter si tu fais du python3), qui permet d'éviter les suprises et de garder tes autres variables définies.

Édité par pierre_24

Doctorant et assistant en chimie à l'Université de NamurEx-dev' pour ZdS (a aidé à réaliser la ZEP-12 !) • Carniste cis (y parait que c'est une injure)

+0 -0
Auteur du sujet

self.request.user.id ?

victor

ça marche!

J'ai pourtant taper ça un bon nombre de fois, mais j'ai du me perdre avec d'autre changement en même temps.

Merci a toi!

Si tu utilise les CBV, tu dois redéfinir la fonction get_context_data(), comme suis (exemple tiré de la ZEP-12):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
class ValidationListView(DetailView):

    # [...]

    def get_context_data(self, **kwargs):
        context = super(ValidationListView, self).get_context_data(**kwargs)

        if 'subcategory' in self.request.GET:
            context['category'] = get_object_or_404(SubCategory, pk=self.request.GET["subcategory"])

        return context

Et dès lors, dans ta tempate, la variable {{ category }} renverra bien ce que tu lui à demandé ;)

Note bien le context = super(ValidationListView, self).get_context_data(**kwargs) (à adapter si tu fais du python3), qui permet d'éviter les suprises et de garder tes autres variables définies.

pierre_24

C'est gentil de préciser, mais c'était bien pour l'utiliser en interne a la class et non pas dans le template. Merci quand même =)

J’adorerais changer le monde, mais ils ne veulent pas me fournir le code source…

+0 -0
Auteur du sujet

C'est gentil de préciser, mais c'était bien pour l'utiliser en interne a la class et non pas dans le template. Merci quand même =)

Sanoc

Oups, j'avais pas compris la question :s

pierre_24

C'est pas grave, c'est gentil!

J’adorerais changer le monde, mais ils ne veulent pas me fournir le code source…

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte