您好,登錄后才能下訂單哦!
Form包含各種字段(Field),每個Field也是一個類,每個Field包含一個widget的類,用來控制html元素的展示個屬性等.
Form
所有的Form都作為django.forms.Form 的子類創建
form.is_bound 返回當前表單是否已綁定數據
hidden_fields() visible_fields() 分別返回所有隱藏的列和可見的列
每個Field都會根據字段類型對應一個默認的類,也可以手動指定widget的值來更改默認widget類,如下
name=forms.CharField(label='名稱'max_length=200,widget=forms.TextInput(attrs={'class':'form-control'}))
widget.attrs
html屬性的一個字典 #{'class': 'form-control', 'required': 'required'}
不管表單提交的是什么數據,一旦通過調用is_valid() 成功驗證(is_valid() 返回True),驗證后的表單數據將位于form.cleaned_data 字典中。這些數據已經為你轉換好為Python 的類型。
注
此時,你依然可以從request.POST 中直接訪問到未驗證的數據,但是訪問驗證后的數據更好一些。
手動渲染時要加上non_field_errors這個錯誤信息.
{{ form.non_field_errors }}
<div class="fieldWrapper"> {{ form.subject.errors }} <label for="{{ form.subject.id_for_label }}">Email subject:</label> {{ form.subject }}</div>
field 中有用的屬性
`field`.`get_XXX_display` #xx指字段名.
當定義的字段為關系字段,選擇字段,bool等等,
django會自動生成一個get_xx_display的方法來生成這些字段的展示數據.
is_end_state = models.SmallIntegerField('是否', default=0,choices=[(0,'否'),(1,'是')])
is_end_state = models.SmallIntegerField('是否', default=0,choices=[(0,'否'),(1,'是')])
當字段類型為CharField時使用get_xx_display,獲取到的值為本身,
直接打印出來為0或者1,使用get_xx_display打印出來則為定義字段時的則為是/否
{{ field.label }}
字段的label,例如Email address。
{{ field.label_tag }}
包含在HTML <label> 標簽中的字段Label。它包含表單的label_suffix。例如,默認的label_suffix 是一個冒號:
<label for="id_email">Email address:</label>
{{ field.id_for_label }}
用于這個字段的ID(在上面的例子中是id_email)。如果你正在手工構造label,你可能想使用它代替label_tag。如果你有一些內嵌的JavaScript 并且想避免硬編碼字段的ID,這也是有用的。
{{ field.value }}
字段的值,例如someone@example.com。
{{ field.html_name }}
輸入元素的name 屬性中將使用的名稱。它將考慮到表單的前綴。
{{ field.help_text }}
與該字段關聯的幫助文檔。
{{ field.errors }}
輸出一個<ul class="errorlist">,包含這個字段的驗證錯誤信息。你可以使用{% for error in field.errors %}自定義錯誤的顯示。 這種情況下,循環中的每個對象只是一個包含錯誤信息的簡單字符串。
{{ field.is_hidden }}
如果字段是隱藏字段,則為True,否則為False。作為模板變量,它不是很有用處,但是可以用于條件測試,例如:
{% if field.is_hidden %} {% endif %}
{{ field.field }}
表單類中的Field 實例,通過BoundField 封裝。你可以使用它來訪問Field 屬性,例如{% char_field.field.max_length %}。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。