2010-01-29 6 views
2

Je pense que c'est la bonne façon de le demander. Je me demande quelles sont les parties du code exécutent une première, deuxième, etc.Django: Quelle est l'ordre de la pile dans Django?

Mon hypothèse serait, mais je ne sais pas:

  1. Demande
  2. Middleware
  3. Voir
  4. modèle
  5. Middleware
  6. Réponse

La raison pour laquelle je demande est parce que je veux que quelque chose se produise dynamicall dans le modèle basé sur une variable de demande et j'essaye de l'appareil la meilleure manière de automatiquement ajouter la demande dans la couche modèle sans passer par les vues. Je suppose qu'une sorte de logiciel fantastique de middleware serait le moyen de le faire d'une manière ou d'une autre.

+0

Pouvez-vous être un peu plus précis? "Ajouter la requête dans le calque du modèle sans passer par les vues" n'a pas vraiment de sens pour moi. Qu'y a-t-il dans la requête que vous essayez de communiquer au modèle? –

+0

J'essaie de voir qui est le request.user courant à l'intérieur de models.py donc ghat Je peux utiliser un gestionnaire personnalisé pour le filtrage basé sur l'utilisateur. – orokusaki

Répondre

4

Pour répondre à votre commentaire de clarification - Vous ne pouvez pas vous y rendre à partir d'ici. Models.py est juste un fichier dans lequel vous placez des classes de modèles, qui ne sont que des classes auxquelles on accède de toutes parts. À moins que l'objet request ne soit passé à la fonction avec laquelle vous travaillez, alors n'existe pas et il n'y a pas de request.user. Les modèles peuvent être utilisés de n'importe où, pas seulement dans des contextes où il y a un request.

Si vous devez travailler avec l'objet request, passez-le en paramètre. Et si cela n'a pas de sens, alors vous utilisez votre modèle incorrect.

1

Le modèle et les modèles ne font jamais partie de la pile. Faites votre travail dans une vue.

+0

allez-vous changer votre réponse d'un caractère afin que je puisse voter vers le haut. Il dit que je ne peux pas voter lol. – orokusaki

1

je pense qu'il est plus comme:

  1. Demande
  2. Middleware (URL mappeur)
  3. Voir
    1. Modèle (si demandé par la vue)
    2. Modèle (si demandé par la vue)
  4. Middleware (sortie de réponse)
Questions connexes