2011-05-06 74 views
0

django中的手動編碼形式(以及views.py中的所有驗證)和使用django的形式庫之間是否存在任何性能差異?如果它們大致相同,那麼在哪種情況下可以使用內置的手形編碼表單?Handcoding forms vs django forms

另外,如何手動編碼HTML模板並使用django塊標籤等來重新使用某些區域?

回答

3

您是否有瘋狂的零容忍性能要求?如下:如果一個頁面需要額外的幾毫秒渲染,人們是否會死亡或受到傷害,否則你會被解僱?我對此表示懷疑,所以讓框架提升到需要對HTML輸出進行更多控制的地步 - 實際上,這遠比您需要避免執行一些Python來保存(在完全猜測)15ms。

當你需要更多的控制,這時候,最好在一些手工製作的HTML拼接,或者 - 甚至更好 - 創建包含/分的表單字段可以重複使用無處不在,爲您節省的手工編寫更多的時間比你需要,但仍然給你更大的靈活性比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 %}