新聞中心
您只需將表單實(shí)例放到模板的上下文中即可。因此,如果您的表單在上下文中叫 ?form ?,那么 ?{{ form }}? 將渲染它相應(yīng)的 ??和??元素。

公司主營業(yè)務(wù):網(wǎng)站建設(shè)、成都做網(wǎng)站、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)建站是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出北川羌族免費(fèi)做網(wǎng)站回饋大家。
表單渲染選項(xiàng)
對于 ?? / ?? 對,還有其他輸出選項(xiàng):
- ?
{{ form.as_table }}? 會將它們呈現(xiàn)為包裹在 ?? 標(biāo)簽中的表格單元格 - ?
{{ form.as_p }}? 會將它們呈現(xiàn)在 ?? 標(biāo)簽中- ?
{{ form.as_ul }}? 會將它們呈現(xiàn)在 ?? 標(biāo)簽中注意,您必須自己提供外層的 ?
? 或 ?
? 元素。
下面是我們 ?ContactForm?實(shí)例用?{{ form.as_p }}? 的輸出:請注意,每個表單字段都有一個 ?
id_? 這樣的ID屬性,它被附帶的?label?標(biāo)簽引用。這對于確保表單可供屏幕閱讀軟件這樣的輔助技術(shù)訪問非常重要手動渲染字段
我們沒有必要非要讓Django來解包表單字段;如果我們喜歡,可以手動來處理(比如,讓我們對字段重新排序)。每個字段都可以用 ?
{{ form.name_of_field }}? 作為表單的一個屬性,并被相應(yīng)的渲染在Django模板中。例如:{{ form.non_field_errors }}{{ form.subject.errors }} {{ form.subject }}{{ form.message.errors }} {{ form.message }}{{ form.sender.errors }} {{ form.sender }}{{ form.cc_myself.errors }} {{ form.cc_myself }}完整的 ?
? 元素還可以使用 ?label_tag()? 來生成。例如:{{ form.subject.errors }} {{ form.subject.label_tag }} {{ form.subject }}渲染表單錯誤信息
這種靈活性的代價(jià)需要多做一點(diǎn)工作。到目前為止,我們不必?fù)?dān)心如何顯示表單的錯誤信息,因?yàn)樗鼈円呀?jīng)幫我們處理好了。下面的例子中,我們需要自己處理每個字段的錯誤信息以及表單整體的所有錯誤信息。注意表單頂部的 ?
{{ form.non_field_errors }}? 以及模板中對每個字段查找錯誤信息。使用 ?
{{ form.name_of_field.errors }}? 顯示該字段的錯誤信息列表,它被渲染成無序列表??雌饋砣缦拢?/p>- Sender is required.
該列表有一個CSS class ?
errorlist?,允許您自定義其樣式。如果你想進(jìn)一步自定義錯誤信息的顯示,您可以通過遍歷它們來實(shí)現(xiàn):{% if form.subject.errors %}-
{% for error in form.subject.errors %}
- {{ error|escape }} {% endfor %}
非字段驗(yàn)證錯誤信息(或者通過使用像 ?
form.as_p()? 這樣的輔助方法渲染產(chǎn)生在表單頂部的隱藏錯誤信息)渲染后會額外帶上一個class ?nonfield?以便與字段驗(yàn)證錯誤信息區(qū)分。例如, ?{{ form.non_field_errors }}? 渲染后會像這樣:- Generic validation error
遍歷表單字段
如果您要給每個表單字段使用相同的HTML,您可以用 ?
{% for %}? 依次循環(huán)遍歷每個字段來減少重復(fù)代碼:{% for field in form %}{{ field.errors }} {{ field.label_tag }} {{ field }} {% if field.help_text %}{% endfor %}{{ field.help_text|safe }}
{% endif %}{{ field }} 的有用屬性包括:
?
{{ field.label }}?字段的?
label?,比如 ?Email??address?。?
{{ field.label_tag }}?該字段的?
label?封裝在相應(yīng)的HTML ?? 標(biāo)簽中。它包含表單的 ?label_suffix?。例如,默認(rèn)的 ?label_suffix?是一個冒號:?
{{ field.id_for_label }}?
用于該字段的 ID(像上面的例子中的 id_email )。如果您要手動構(gòu)建label,您可能要用這個來替換 label_tag 。例如,如果你有一些內(nèi)嵌的JavaScript并且想要避免硬編碼字段的ID,這也很有用。
?{{ field.value }}?
字段的值。例如 someone@example.com
?{{ field.html_name }}?
字段名稱:用于其輸入元素的name屬性中。如果設(shè)置了表單前綴,它也會被加進(jìn)去。
?{{ field.help_text }}?
與該字段關(guān)聯(lián)的幫助文本
?{{ field.errors }}?
輸出一個 ?? ,其中包含這個字段的所有驗(yàn)證錯誤信息。你可以使用 ?{% for error in field.errors %}? 循環(huán)來自定義錯誤信息的顯示。在這種情況下,循環(huán)中的每個對象是包含錯誤信息的字符串。?
{{ field.is_hidden }}?
如果是隱藏字段,這個屬性為 True ,否則為 False 。它作為模板變量沒多大作用,但可用于條件測試,例如:{% if field.is_hidden %} {# Do something special #} {% endif %}?
{{ field.field }}?
表單類中的 ?Field?實(shí)例由 ?BoundField?封裝。您可以用它來訪問 ?Field?的屬性,比如?{{ char_field.field.max_length }}? 。遍歷隱藏字段和可見字段
如果您在手動布置模板中的表單,而不是依靠Django的默認(rèn)表單布局,您可能希望將 ?
? 字段與非隱藏字段區(qū)別開來。例如,因?yàn)殡[藏字段不顯示任何內(nèi)容,將錯誤消息放到該字段旁邊可能會導(dǎo)致用戶混淆——所以這些字段的錯誤應(yīng)該以不同的方式處理。
Django在表單上提供了兩種方法,允許您獨(dú)立地遍歷隱藏和可見的字段: ?hidden_fields()? 和 ?visible_fields()? 。以下是使用這兩種方法對之前示例的修改:{# Include the hidden fields #} {% for hidden in form.hidden_fields %} {{ hidden }} {% endfor %} {# Include the visible fields #} {% for field in form.visible_fields %}{{ field.errors }} {{ field.label_tag }} {{ field }}{% endfor %}這個示例沒有處理隱藏字段中的任何錯誤信息。通常,隱藏字段中的錯誤象征著表單被篡改,因?yàn)檎5谋韱谓换ゲ粫ジ淖兯鼈?。但是,您也可以輕松地為這些表單錯誤插入一些錯誤信息顯示出來。
可復(fù)用的表單模板
如果你的網(wǎng)站在多個地方使用相同的表單渲染邏輯,你可以通過將表單的循環(huán)保存在一個獨(dú)立的模板中,并覆蓋表單的 ?
template_name?屬性來使用自定義模板渲染表單,從而減少重復(fù)。下面的例子將導(dǎo)致 ?{{ form }}? 被渲染成 ?form_snippet.html? 模板的輸出。
在你的模板中:# In your template: {{ form }} # In form_snippet.html: {% for field in form %}{{ field.errors }} {{ field.label_tag }} {{ field }}{% endfor %}在你的表單中:
class MyForm(forms.Form): template_name = 'form_snippet.html' ...
當(dāng)前名稱:創(chuàng)新互聯(lián)Django4.0教程:Django4.0使用表單-使用表單模板
轉(zhuǎn)載注明:http://m.5511xx.com/article/dpdcgpd.html - ?


咨詢
建站咨詢
