使用 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 生成的奖励点吗?