2017-08-20 30 views
0

VSだから私は、Djangoのソースコードに掘り、これら2出くわした: views.generic.list.pyviews.generic.base.pyDjangoの汎用ビューは - extra_contextの値プロパティの明確化 - githubのインストールソース

ので、これはContextMixinget_context_database.pyにライン26であります方法

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

MultipleObjectMixinlist.pyで9行目)は、ContextMixinを継承し、上書きで親クラスのメソッドを呼び出しますget_context_data方法(list.pyでライン136)

のでextra_context変数は、仕事とMultipleObjectMixinを使用するクラスでテンプレートエンジンに渡された辞書に追加のコンテキストを追加する必要があります。 しかし、私が調べた質問では、extra_contextはもうサポートされていないと書かれていて、動作しなかったコードを実行したので、私が望むものを得るためにはget_context_dataを上書きしなければなりませんでした。

P.S. 私のシステムでインストールされたソースをチェックしたところ、githubコードとは違っていたので、私の質問はなぜ最新のリリース版の背後にあるのですか?

+0

マスターブランチ(Django 2.0になります)にリンクしています。使用している特定のバージョンのタグを確認する必要があります。 1.11。 – Alasdair

+0

私はジェネリック・ビューをサブクラス化したり、ミックスインを追加したりしていましたが、これを見ていませんでした。それは何か新しいものでなければなりません。しかし、私はあまりにも頻繁に考えることはできませんが、私はコンパイル時に知られているコンテキストに物事を追加するだけです。したがって、とにかくget_context_dataをオーバーライドする方が理にかなっています。 –

+1

ContextMixinの 'extra_context'が現在のマスターに追加されました(わずか1ヶ月以上前)(https://github.com/django/django/commit/604341c85fe42c809d17ea2418566a48f60f78db)。 – knbk

答えて

0

私はDjnago 1.5またはそれに近いものに関するextra_contextについての質問を見たと思いますので、その機能が存在し、削除されていて、それがマスターブランチが最新のリリースの背後にあるという印象を与えました それは新しく追加された(またはおそらく復活した)の機能だと指摘されています。

だから、これはすべてを説明していると思います。私は誰かが持っている場合は、より完全な答えを受け入れることを嬉しく思う:)または私はちょうどこの質問を閉じるために自分の答えで行くだろう。

関連する問題