django中的手动编码形式(以及views.py中的所有验证)和使用django的表单库之间是否存在任何性能差异?如果它们大致相同,那么在哪种情况下,人们可以使用内置的手动编码表单?
此外,手动编码HTML模板和使用django块标签等重新使用某些区域怎么样?
答案 0 :(得分:3)
您是否有疯狂的零容忍性能要求?如下所示:如果页面需要额外的几毫秒才能渲染,那么人们实际上会死亡还是会受到伤害?或者你会被解雇?
我对此表示怀疑,所以让框架完成提升到需要对HTML输出进行更多控制的程度 - 这实际上远比你需要避免执行某些Python来保存(在完全猜测)15ms。
当你需要更多的控制时,那就是最好拼接一些手工制作的HTML,或者 - 甚至更好 - 为你可以在任何地方重复使用的表单字段创建一个include / partial,以节省你手动编写的时间超过你需要,但仍然比myform.as_p
等提供更多的灵活性
这是我使用和改编的粗略片段,让我对表单字段有很多控制权,还让我利用Django模板框架来节省时间:
在我的模板中:
{% for form_field in myform %}
{% include "path/to/partials/form_field_as_p.html" %}
{% endfor %}
在那个form_field_as_p.html中,类似于:
{% if not form_field.is_hidden %}
<p>
{% if form_field.errors %}
{% for error in form_field.errors %}
<span class="errorlist">{{error}}</span>
{% endfor %}
{% endif %}
{{ form_field.label_tag }}
{% if form_field.field.required %}
<span class="required">*</span>
{% endif %}
{{ form_field }}
{% if form_field.help_text %}
<span class="form-help-text">{{ form_field.help_text }}</span>
{% endif %}
</p>
{% else %}
<div>{{ form_field }}</div> {# hidden field #}
{% endif %}