IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

Accès de l'objet request dans un filtre


Sujet :

Django Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Février 2014
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2014
    Messages : 2
    Par défaut Accès de l'objet request dans un filtre
    Bonjour à tous,
    J'ai chercher dans pas mal d'endroit mais je n'ai pas trouver de solution..
    J'aimerais savoir si a partir d'un filtre personnel, ici 'add_attribut' il y aurais une possibilité d'avoir accès a l'objet request ?

    ex:
    @register.filter(name='add_attrs', is_safe=True)
    def add_attribut(texte, args):

    Merciiiiiii d'avance

  2. #2
    Membre expérimenté Avatar de Stopher
    Homme Profil pro
    Responsable technique
    Inscrit en
    Juin 2004
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Responsable technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 198
    Par défaut
    Salut,

    Si tu as besoin d'un élément du dictionnaire request, passe-le simplement en paramètre depuis ton template .

    Sinon, tu devrais utiliser un template tag à la place, là tu as accès au Context, donc request.
    Exemple ( dump_request )

    fichier : templatetags/tags.py

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    #-*- coding:utf-8-*-
    from django import template
     
    register = template.Library()
    @register.tag(name="dump_request")
    def dump_current_request(parser, token):
        tag_name, param = token.split_contents()
        return CurrentRequest()
     
     
    class CurrentRequest(template.Node):
     
        def render(self, context):
            return context

    Dans ton template :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    {% load tags %}
     
    {% dump_request "parametre" %}

  3. #3
    Candidat au Club
    Inscrit en
    Février 2014
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2014
    Messages : 2
    Par défaut
    Re, Merci pour ta réponse
    enffet, j'aurais voulue faire quelque chose dans ce style :

    -'field' : Champ de formulaire qui est auto-générer par l'application
    comment des contrits.
    -'attribut', l'attribut html5 que j'aimerais rajouter.
    -user.name, la valeur en question qui est ici l'utilisateur enregistrer.

    {{ field|add_attrbs:'attribut,{{user.name}}' }}
    mais je n'arrive pas a passer la variable user.name, donc je pensais récupérer le context depuis mon filtre personnel.

    J'ai essayer de rajouter un attribut au formulaire de l'application comments des contribs mais je n'ai pas trouver comment faire
    En héritant du formulaire comment et en surchargeant le champ input voulue?
    get_comment_form est il un formulaire classique au quel on peux hériter? dsl je suis debutant sur le framework django

    Par contre pour le template tag sa pourrais être une bonne solution, je vais essayer sa tantôt, merci encore

  4. #4
    Membre expérimenté Avatar de Stopher
    Homme Profil pro
    Responsable technique
    Inscrit en
    Juin 2004
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Responsable technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 198
    Par défaut
    Ta façon de faire n'est pas correcte, dans ton template cette ligne ne peut pas fonctionner

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {{ field|add_attrbs:'attribut,{{user.name}}' }}
    Tu ne peux pas imbriquer les accolades. De plus un filtre ne permet qu'un argument, c'est pourquoi un tag serait plus adapté.

    Sinon, tu peux utiliser un truc du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
          {% with arg='attribut,'|add:request.user.name %}
            {{ field|add_attrbs:arg }}
          {% endwith %}
    Mais bon ... c'est méga lourd !

    C'est plus simple comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {% field 'attr1' 'attr2' 'attrX' %}

    Par contre pour gérer les formulaires, Django possède tout un mécanisme vraiment abouti

    https://docs.djangoproject.com/en/dev/ref/forms/api/

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/05/2014, 09h49
  2. Accès aux fonctions objets dans tableau
    Par dubitoph dans le forum Langage
    Réponses: 5
    Dernier message: 16/02/2009, 18h12
  3. Réponses: 3
    Dernier message: 30/06/2008, 10h49
  4. modifier des valeurs dans l'objet Request?
    Par airod dans le forum Zope
    Réponses: 2
    Dernier message: 27/05/2008, 15h36
  5. Réponses: 5
    Dernier message: 25/07/2007, 15h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo