手动编码形式与django形式

时间:2011-05-06 07:08:03

标签: django

django中的手动编码形式(以及views.py中的所有验证)和使用django的表单库之间是否存在任何性能差异?如果它们大致相同,那么在哪种情况下,人们可以使用内置的手动编码表单?

此外,手动编码HTML模板和使用django块标签等重新使用某些区域怎么样?

1 个答案:

答案 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 %}