donc je fouillais dans les codes sources de Django et suis tombé sur ces deux: views.generic.list.py
et views.generic.base.py
Django 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?
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
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. –
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