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 aux variables de contexte


Sujet :

Django Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de alexdevl
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 265
    Par défaut accès aux variables de contexte
    Bonjour,
    Après 2 ans de python comme de plus en plus sur le forum, il me semble, j'ai franchi le pas vers django.

    Je voulais récupérer au sein d'une page html, dans une variable django, l'adresse de la page visualisée.

    J'ai réalisé les 4 étapes suivantes, cela fonctionne mais
    - Tout les points sont ils nécessaires ?
    - La liste du point 3 est elle quelque part dans une doc ?

    1°) Dans setting.py rajouter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TEMPLATE_CONTEXT_PROCESSORS = ('django.core.context_processors.request',)

    2°) Dans views.py remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from django.template import Template, Context
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from django.template import Template, RequestContext
    3°) Afficher dans un fichier html la variable {{request}}
    Ceci ressemble à la sortie suivante :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    [{'request': <WSGIRequest
    GET:<QueryDict: {}>,
    POST:<QueryDict: {}>,
    COOKIES:{},
    META:{'ALLUSERSPROFILE': 'C:\\Documents and Settings\\All Users',
     'APPDATA': 'C:\\Documents and Settings\\aaa\\Application Data',
     'CLIENTNAME': 'Console',
     'COMMONPROGRAMFILES': 'C:\\Program Files\\Fichiers communs',
     'COMPUTERNAME': 'BUREAU',
     'COMSPEC': 'C:\\WINDOWS\\system32\\cmd.exe',
     'CONTENT_LENGTH': '',
     'CONTENT_TYPE': 'text/plain',
     'DEVMGR_SHOW_DETAILS': '1',
     'DJANGO_SETTINGS_MODULE': 'projDjango1.settings',
     'FP_NO_HOST_CHECK': 'NO',
     'GATEWAY_INTERFACE': 'CGI/1.1',
     'HOMEDRIVE': 'C:',
     'HOMEPATH': '\\Documents and Settings\\aaa',
     'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
     'HTTP_ACCEPT_CHARSET': 'ISO-8859-1,utf-8;q=0.7,*;q=0.7',
     'HTTP_ACCEPT_ENCODING': 'gzip,deflate',
     'HTTP_ACCEPT_LANGUAGE': 'fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3',
     'HTTP_CONNECTION': 'keep-alive',
     'HTTP_HOST': 'localhost:8000',
     'HTTP_KEEP_ALIVE': '300',
     'HTTP_REFERER': 'http://localhost:8000/',
     'HTTP_USER_AGENT': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7',
     'LOGONSERVER': '\\\\BUREAU',
     'NUMBER_OF_PROCESSORS': '1',
     'OS': 'Windows_NT',
     'PATH': 'C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\Python25\\Lib\\site-packages\\wx-2.8-msw-unicode\\wx;C:\\Python25\\Lib\\site-packages\\wx-2.8-msw-unicode\\wx;C:\\Program Files\\Google\\google_appengine\\',
     'PATHEXT': '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH',
     'PATH_INFO': u'/test',
     'PROCESSOR_ARCHITECTURE': 'x86',
     'PROCESSOR_IDENTIFIER': 'x86 Family 6 Model 10 Stepping 0, AuthenticAMD',
     'PROCESSOR_LEVEL': '6',
     'PROCESSOR_REVISION': '0a00',
     'PROGRAMFILES': 'C:\\Program Files',
     'PROMPT': '$P$G',
     'QUERY_STRING': '',
     'REMOTE_ADDR': '127.0.0.1',
     'REMOTE_HOST': '',
     'REQUEST_METHOD': 'GET',
     'RUN_MAIN': 'true',
     'SCRIPT_NAME': u'',
     'SERVER_NAME': 'localhost',
     'SERVER_PORT': '8000',
     'SERVER_PROTOCOL': 'HTTP/1.1',
     'SERVER_SOFTWARE': 'WSGIServer/0.1 Python/2.5.4',
     'SESSIONNAME': 'Console',
     'SYSTEMDRIVE': 'C:',
     'SYSTEMROOT': 'C:\\WINDOWS',
     'TEMP': 'C:\\DOCUME~1\\aaa\\LOCALS~1\\Temp',
     'TMP': 'C:\\DOCUME~1\\aaa\\LOCALS~1\\Temp',
     'TVDUMPFLAGS': '8',
     'USERDOMAIN': 'BUREAU',
     'USERNAME': 'aaa',
     'USERPROFILE': 'C:\\Documents and Settings\\aaa',
     'WINDIR': 'C:\\WINDOWS',
     'wsgi.errors': <open file '<stderr>', mode 'w' at 0x009700B0>,
     'wsgi.file_wrapper': <class 'django.core.servers.basehttp.FileWrapper'>,
     'wsgi.input': <socket._fileobject object at 0x00ECADF0>,
     'wsgi.multiprocess': False,
     'wsgi.multithread': True,
     'wsgi.run_once': False,
     'wsgi.url_scheme': 'http',
     'wsgi.version': (1, 0)}>}, {}]

    4°) Enfin dans le fichier html utiliser la variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {{request.META.PATH_INFO}}
    qui affichera "/test" dans l'exemple

  2. #2
    Membre Expert
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Par défaut
    RequestContext permets de traiter pour une vue la liste des context processors défini dans ton settings.py (TEMPLATE_CONTEXT_PROCESSORS)

    L'import est donc obligatoire à partir du moment ou tu génères une vue toi même.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def test(request):
        return render_to_response('test/test.html',
                                  { 'form': form.as_table(),
                                    },
                                  context_instance=RequestContext(request))
    Doc : http://docs.djangoproject.com/en/dev...om=olddocs#id1


    Pour le détail de l'objet, une partie est documenté ici : http://docs.djangoproject.com/en/dev...equest-objects

  3. #3
    Membre expérimenté Avatar de alexdevl
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 265
    Par défaut
    Merci pour le lien.
    Et je n'avais en effet pas noté la modification suivante dans views.py :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def test(request):
        return render_to_response('test.html',config_site,RequestContext(request))
    Soit dit en passant, Django, rien qu'en une semaine de pratique, est ébouriffant.
    Alex

Discussions similaires

  1. [FLASH MX] Accès aux variables
    Par renofx1 dans le forum Flash
    Réponses: 4
    Dernier message: 21/12/2005, 15h30
  2. Acces aux variables d'une DLL
    Par abignon dans le forum MFC
    Réponses: 1
    Dernier message: 08/09/2005, 14h29
  3. [C#] Accès aux variables Session
    Par kalan dans le forum ASP.NET
    Réponses: 9
    Dernier message: 31/08/2005, 16h40
  4. [FLASH MX2004] [AS2] Accès aux variables d'une classe
    Par stailer dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 17/07/2005, 12h58
  5. [Language]Accès aux variables
    Par Adaemon dans le forum Langage
    Réponses: 12
    Dernier message: 27/04/2005, 14h17

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