Django passant des variables à des modèles à partir de vues basées sur une classe
Si j'ai une classe en fonction de la vue, comme ça,
class SomeView (View):
response_template='some_template.html'
var1 = 0
var2 = 1
def get(self, request, *args, **kwargs):
return render_to_response(self.response_template, locals(), context_instance=RequestContext(request))
Ma question est, à l'intérieur du modèle some_template.html
comment puis-je accéder à var1
et var2
? Aussi loin que je l'ai compris, le locals()
sorte de juste décharges de toutes les variables dans le modèle, qui a très bien fonctionné jusqu'à présent. Mais ces autres variables ne sont pas techniquement "local", ils font partie d'une classe, alors comment puis-je passer??
Merci!
source d'informationauteur reedvoid
Vous devez vous connecter pour publier un commentaire.
Ajouter
self.var1
etself.var2
le contexte dansget
méthode:Aussi, je ne suis pas sûr que le passage
locals()
comme un contexte pour le modèle est une bonne pratique. Je préfère construire les données transmises dans le modèle explicitement = pass seulement ce que vous avez vraiment besoin dans le modèle.Espère que ça aide.
D'une façon plus propre de le faire pourrait être de répliquer Django Template de vue:
et puis l'ajouter à la get_context_data fonction. Ou vous pouvez simplement utiliser le TemplateView qui vous permettra de spécifier un nom de modèle, et puis vous pouvez remplacer le get_context_data fonction:
MODIFIER
Django a générique de vues que vous pouvez utiliser pour une variété de choses, je vous conseille fortement d'aller le chercher à la docs pour une liste complète de Ces génériques points de vue ont des fonctions vous pouvez remplacer pour ne personnalisée choses qui ne sont pas pris en charge par défaut. Dans votre cas, tu voulais juste un modèle avec des variables de contexte, ce qui signifie que vous sous-classe de la TemplateView et d'approvisionnement de la template_name et puis, finalement, vous pouvez remplacer la get_context_data fonction pour ajouter vos données de contexte et qui serait tout là est à lui, le second morceau de code serait tous vous avez besoin dans votre cas.
Pour se passer de votre classe de l'étiquette de variable à l'intérieur d'une fonction, vous devez consulter avec slef qui se réfèrent comme à un objet nouvellement créé. Comme nous le savons pour l'accès à n'importe quelle variable dans la classe, nous devons nous référer à son objet. Sinon, il sera pris global "nom de votre variable" n'est pas défini
comme un exemple, dans votre cas, vous pouvez le faire comme