2

私はDjangoを初めて使用し、HTMLスニペットをモデルに関連付ける方法を見つけようとしています。

私のHTMLスニペットは単なるdivです。そのdivを再利用したい(サムネイルのように考えることができます)

状況は次のようになります。メインページにx個のオブジェクトを表示し、検索ページにさらに多くのオブジェクトを表示したい。しかし、表現は同じです。

mainpage.htmlとsearchpage.htmlに、モデルオブジェクトをdivに変換する望ましい方法を書き込むことができますが、その変換を再利用するための最良の方法がわかりません。

HTML divを返す関数をモデルに追加して、メインページと検索ページのテンプレートから呼び出すことができます。しかし、それはモデルと表現を結びつけるでしょう、それは私がするのはあまり良いことではないと私は信じています。

私が間違っていない場合、 includement_tagは進むべき道ですが、どのファイルに関数定義を保持する必要がありますか?

4

1 に答える 1

3

あなたが正しく言うように、あなたはあなたのモデルにhtmlを望まない、それはMVCパターンに反する。

モデルはデータを保存するためのものです。ビューは表示するデータを選択するためのものであり、テンプレートはデータの実際の表示に使用されます。( djangoによるMVCの解釈については、このメモを参照してください)。

質問に答えるには、モデルを表すためのテンプレート(またはテンプレートタグmodel_block.html)が必要です。何かのようなもの

{% if obj %}
    <div id=obj.id>
        {{ obj.name }}
    </div>
{% endif %}

次に、テンプレートをmainpage.html好きなものに含めます

{% for obj in object_list %}
    {% include 'model_block.html' %}
{% endfor %}

ビューから別の変数searchpage.htmlを渡して、で同じことを行うことができます。object_list

于 2013-02-10T13:54:52.703 に答える