2017-08-20 4 views
0

donc je fouillais dans les codes sources de Django et suis tombé sur ces deux: views.generic.list.py et views.generic.base.pyDjango vue générique - clarification sur la propriété extra_context - github vs la source installée

c'est donc la ligne 26 dans base.py dans ContextMixin « s get_context_data procédé

if self.extra_context is not None: 
    kwargs.update(self.extra_context) 
return kwargs 

MultipleObjectMixin (ligne 9 list.py) hérite ContextMixin et appelle la méthode de la classe parent dans le get_context_data écrasé La ligne extra_context La variable extra_context doit donc fonctionner et ajouter un contexte supplémentaire au dictionnaire transmis au moteur de modèle dans les classes qui utilisent le MultipleObjectMixin. Mais les questions que j'ai levées ont indiqué que extra_context n'est plus supporté, et j'ai couru un code qui n'a pas fonctionné et j'ai dû écraser get_context_data pour obtenir ce que je voulais, est-ce que quelqu'un a des explications à ce sujet?

P.S. J'ai vérifié les sources installées sur mon système, et c'était différent du code github, alors ma question est maintenant: pourquoi le référentiel est-il à l'origine des dernières versions publiées?

+0

Vous créez un lien vers la branche principale (qui deviendra Django 2.0). Vous devriez regarder l'étiquette pour la version spécifique que vous utilisez, par ex. 1.11. – Alasdair

+0

J'ai utilisé beaucoup de vues génériques (en les sous-classant, en ajoutant des mixins, etc.) et je n'ai pas vu ça. Ça doit être quelque chose de nouveau. Mais je ne peux pas penser trop souvent que j'ajoute seulement des choses au contexte qui sont connues au moment de la compilation. Il est donc plus logique de simplement surcharger get_context_data de toute façon. –

+1

ContexteMixin 'extra_context' a été ajouté [il y a un peu plus d'un mois] (https://github.com/django/django/commit/604341c85fe42c809d17ea2418566a48f60f78db) au maître actuel. – knbk

Répondre

0

Je pense avoir vu une question à propos de extra_context qui concernait Djnago 1.5 ou quelque chose de proche, donc j'ai supposé que la fonctionnalité existait et a été supprimée et cela m'a donné l'impression que la branche principale est derrière la dernière version comme il semble, et @knbk a souligné, c'est une fonctionnalité nouvellement ajouté (ou peut-être relu). Donc, je suppose que tout cela explique tout. Je serais heureux d'accepter une réponse plus complète si quelqu'un en a un :) ou je vais aller avec ma propre réponse pour fermer cette question.