1

私は最近djangoの質問をしました-そして答えの1つは私を困惑させました:

https://stackoverflow.com/a/10608687/1061426

django docoを読みましたが、ミックスインが質問された内容とどのように関連しているか、または回答が何を指しているのかを完全に理解することはできません。

そこで、「django mixinチュートリアル」を検索して、dajaxとdajaxiceというものに出くわしました。わかりました、私は嘘をついています、私はこのブログに出くわしました:

http://www.pythondiary.com/blog/Apr.15,2012/stay-tuned-django-ajax-tutorial.html

私の質問は:ミックスインとは何ですか?それらはajax呼び出しとどのように関連していますか?それらはajax以外の目的で使用されていますか?単なるdjangoではなく、dajax、dajaxice、またはその他のdjangoアドインフレームワークを使用してajaxを操作したいのはなぜですか?

また、dajaxタグはありませんが、stackoverflow用のdajaxiceタグがあります...それはdajaxiceがThe Way To Goであることを意味しますか?

乾杯、

4

2 に答える 2

4

ミックスインは、一般的なオブジェクト指向プログラミングの概念です。特にDjangoやDajaxなどとは何の関係もありません。ただし、Djangoは関係があり、Dajaxもおそらく同様にミックスインを使用します。

一般に、「ミックスイン」は、文字通り別のクラスと混合されることを意図したクラスです。通常、それ自体では何もしませんが、別のクラスに機能を追加するだけです。Djangoの「抽象」モデルの概念は、ミックスインの一例です。抽象モデルをインスタンス化することはありません。代わりに、他のモデルは抽象モデルを継承し、そのすべての機能を取得します。実際にインスタンス化されるのはこれらのサブクラスです。

Djangoのクラスベースのビュー(ここであなたを導いた答えが話しているものです)もミックスインを使用しています。たとえば、ほとんどのクラスベースのビューはから継承しTemplateResponseMixinます。このクラスはビュー自体ではなく、クラスベースのビューから継承する以外の目的で使用することはありません。これは、テンプレートを応答にレンダリングするすべての機能をカプセル化したものにすぎないため、DRY(Do n't Repeat Yourself)に違反することなく、さまざまなビューすべてに機能的に「ミックスイン」できます。

于 2012-05-17T20:26:21.147 に答える
2

いいえ、ミックスインはAjaxとは特に関係がありません。

ミックスインは、別のクラスの多重継承の一部として使用できる単なるクラスです。Djangoはこれらをクラスベースのビューで広範囲に使用します-一部のクラスは(たとえば)フォームやモデルのリストを表示するための基本的な機能を提供し、それらを独自のクラスと混合することを目的としています:独自のコードを作成して1つ以上のミックスインから継承しながら、その機能に対する独自の拡張機能。

Dajaxを使用したことはありませんが、ビュー内でAjax処理の基本的な実装を提供するためにミックスインも使用していると思います。

于 2012-05-17T18:27:06.160 に答える