VSだから私は、Djangoのソースコードに掘り、これら2出くわした: views.generic.list.py
とviews.generic.base.py
Djangoの汎用ビューは - extra_contextの値プロパティの明確化 - githubのインストールソース
ので、これはContextMixin
のget_context_data
にbase.py
にライン26であります方法
if self.extra_context is not None:
kwargs.update(self.extra_context)
return kwargs
MultipleObjectMixin
(list.py
で9行目)は、ContextMixin
を継承し、上書きで親クラスのメソッドを呼び出しますget_context_data
方法(list.py
でライン136)
のでextra_context
変数は、仕事とMultipleObjectMixin
を使用するクラスでテンプレートエンジンに渡された辞書に追加のコンテキストを追加する必要があります。 しかし、私が調べた質問では、extra_context
はもうサポートされていないと書かれていて、動作しなかったコードを実行したので、私が望むものを得るためにはget_context_data
を上書きしなければなりませんでした。
P.S. 私のシステムでインストールされたソースをチェックしたところ、githubコードとは違っていたので、私の質問はなぜ最新のリリース版の背後にあるのですか?
マスターブランチ(Django 2.0になります)にリンクしています。使用している特定のバージョンのタグを確認する必要があります。 1.11。 – Alasdair
私はジェネリック・ビューをサブクラス化したり、ミックスインを追加したりしていましたが、これを見ていませんでした。それは何か新しいものでなければなりません。しかし、私はあまりにも頻繁に考えることはできませんが、私はコンパイル時に知られているコンテキストに物事を追加するだけです。したがって、とにかくget_context_dataをオーバーライドする方が理にかなっています。 –
ContextMixinの 'extra_context'が現在のマスターに追加されました(わずか1ヶ月以上前)(https://github.com/django/django/commit/604341c85fe42c809d17ea2418566a48f60f78db)。 – knbk