Qu'est-ce qu'un contexte dans Django?

Je suis un débutant django donc j'essaie de comprendre le concept de contexte et de processeur de contexte.

  • qu'est Ce qu'un contexte et pourquoi l'utilisez-vous?
  • un contexte est-il une valeur dont vous avez besoin pour pouvoir l'utiliser dans un modèle?
  • un contexte et un processeur de contexte sont-ils identiques?

Je vais apprécier beaucoup votre réponse. Merci à l'avance!

31
demandé sur Camilo Sanchez 2014-01-06 23:08:53

3 réponses

Lorsque vous utilisez un modèle Django, il est compilé une fois (et une seule fois) et stocké pour une utilisation future, en tant qu'optimisation. Un modèle peut avoir des noms de variables en accolades doubles, telles que {{ myvar1 }}, {{ myvar2 }}.

Un contexte est un dictionnaire avec des noms de variables comme " clé "et leurs valeurs comme "valeur". Par conséquent, si votre contexte pour le modèle ci-dessus ressemble à: {myvar1: 101, myvar2: 102}, lorsque vous passez ce contexte à la méthode de rendu du modèle, {{myvar1 }} serait remplacé avec 101 et {{ myvar2 }} avec 102 dans votre modèle. Ceci est un exemple simpliste, mais vraiment un objet de contexte est le "contexte" dans lequel le modèle est rendu.

Quant à un ContextProcessor, c'est un concept légèrement avancé. Vous pouvez avoir dans votre settings.py fichier répertorié quelques processeurs de contexte qui prennent un objet HttpRequest et renvoient un dictionnaire (similaire à L'objet Context ci-dessus). Le dictionnaire (contexte) renvoyé par le processeur de contexte est fusionné dans le contexte passé par vous (l'utilisateur) par Django.

Un cas d'utilisation pour un processeur de contexte est lorsque vous souhaitez toujours insérer certaines variables dans votre modèle (par exemple, l'emplacement de l'utilisateur peut être un candidat). Au lieu d'écrire du code pour l'insérer dans chaque vue, vous pouvez simplement écrire un processeur de contexte pour cela et l'Ajouter aux paramètres TEMPLATE_CONTEXT_PROCESSORS dans settings.py.

J'espère que cela a du sens. Merci de prendre la classe!

- Sid

55
répondu Sid 2014-01-06 19:53:00

Un contexte est un nom de la variable -> valeur de la variable cartographie qui est passé à un modèle.

Contexte processeurs vous permettent de spécifier un certain nombre de variables qui, à établir dans chaque contexte automatiquement, sans avoir à spécifier les variables de chaque render(){[2],} appeler.

12
répondu Victor Castillo Torres 2014-01-06 19:40:17

Le Context est décrit assez bien dans la documentation officielle. En bref:

  1. Au jour le jour, surtout indirectement, parce que les fonctions d'assistance construire la Context pour vous

  2. Voir 1.: vous n'aurez besoin que si vous utilisez l'api de bas niveau

  3. Non, un processeur de contexte est une fonction qui prend une requête et renvoie un dictionnaire de variables qui sont alors disponibles dans tous les modèles rendus avec un RequestContext, par exemple:

    def get_stuff_from_session(request):
        return {'stuff': request.session['stuff']}
    
1
répondu sk1p 2017-07-13 12:01:19