1

Django テンプレートを使用する場合、いわば「サブルーチン」のように機能するいくつかのテンプレートを使用する必要がありますか、またはこれらの場合、コード内から HTML を生成する必要がありますか?

たとえば、いくつかの名前のリストを含むテンプレートがあり、それぞれをselect. 変数を選択にレンダリングするテンプレートがあり、次のname_listようにする必要があります。

#in the view:
return {'name_list_1': name_list_1, 
        'name_list_2': name_list_2, 
        'name_list_3': name_list_3}

#in the template:
{% with name_list_1 as name_list %}
  {% include "sub_name_list_select.html" %}
{% endwith %}
{% with name_list_2 as name_list %}
  {% include "sub_name_list_select.html" %}
{% endwith %}
{% with name_list_3 as name_list %}
  {% include "sub_name_list_select.html" %}
{% endwith %}

または、同じ仕事をする関数をコードに入れname_list_to_select_html、これを行う必要があります。

return {'name_list_1_html': name_list_to_select_html(name_list_1), 
        'name_list_2_html': name_list_to_select_html(name_list_2), 
        'name_list_3_html': name_list_to_select_html(name_list_3)}

#in the template:
{{ name_list_1_html|safe }}
{{ name_list_2_html|safe }}
{{ name_list_3_html|safe }}

それとも、これらの両方が間違っていて、私は哲学を完全に間違っていますか?

追加の質問: 速度に関して、常にテンプレートを含めるのは遅いですか? それはコード内 HTML 生成のボーナス ポイントですか?

4

1 に答える 1

3

一般に、HTML はテンプレート システムまたは直接関連するコードでのみ生成する必要があります。これにより、データのビューがビジネスおよび機能ロジックから完全に分離されます。それが適切な関心の分離だと思います。最初のソリューションを使用してください。

パフォーマンスに関しては、Django はおそらくどちらのコードの実行にもほぼ同じ時間を費やすはずです。ただし、要求ごとにコードのセグメントを再生成する必要がないことがわかっている場合は、ビューとテンプレート フラグメントのキャッシュが組み込まれています。

于 2012-07-19T18:18:08.387 に答える