web-dev-qa-db-fra.com

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

Je suis un débutant de Django alors 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 utiliser un modèle?
  • Un contexte et un processeur de contexte sont-ils identiques?

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

33
Camilo Sanchez

Lorsque vous utilisez un modèle Django, il est compilé une fois (et une seule fois) et stocké pour une utilisation ultérieure, à titre d'optimisation. Un modèle peut avoir des noms de variables entre deux accolades, 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 transmettez ce contexte à la méthode de rendu du modèle, {{myvar1}} sera remplacé par 101 et {{myvar2}} par 102 dans votre modèle. Ceci est un exemple simpliste, mais un objet Context est en réalité le "Contexte" dans lequel le modèle est rendu.

Quant au ContextProcessor, il s’agit d’un concept légèrement avancé. Dans votre fichier settings.py, vous pouvez avoir 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 transmis par vous (l'utilisateur) par Django. 

Un cas d'utilisation d'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 candidat). Au lieu d'écrire du code pour l'insérer dans chaque vue, vous pouvez simplement écrire un processeur de contexte et l'ajouter aux paramètres TEMPLATE_CONTEXT_PROCESSORS dans settings.py.

J'espère que cela a du sens. Merci d'avoir suivi le cours!

-Sid

59
Sid

Un contexte est un nom de variable -> valeur de variable mappage qui est transmis à un modèle.

Processeurs de contexte vous permettent de spécifier un nombre de variables à définir dans chaque contexte automatiquement - sans que vous ayez à spécifier les variables dans chaque render () call.

12

La Context est assez bien décrite dans la documentation officielle . En bref:

  1. Au quotidien, principalement indirectement, car helper fonctionne construit la Context pour vous

  2. Voir 1 .: vous n’en 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 ensuite disponibles dans tous les modèles rendus avec un RequestContext , par exemple:

    def get_stuff_from_session(request):
        return {'stuff': request.session['stuff']}
    
1
sk1p