Django(十六): Form組件在視圖函數和模板中的渲染

視圖處理渲染:
1>. 生成html標籤
1. 生成 form對象, view.py
未初始化: form = MyForm()
初始化: data = {}
form = MyForm(data) # 注意字段匹配
2. 傳入模板渲染 .html
{{form.field_name.label}} 標籤名
{{form.field_name}} 標籤信息
{{form.field_name.errors}} 錯誤信息(列表) {{obj.field_name.errors.0}} 取第一個錯誤
或者
{{form.as_p}} 總體渲染

2>. 驗證格式
1.驗證
form = MyForm(req.POST) # 獲取用戶信息
if form.is_valid(): # 校驗
data = form.cleaned_data # 成功獲取信息,字典
Table.objects.create(**data) # 存入數據,注意form字段名稱與model配對
else:
errors = form.errors # 獲取錯誤信息
2. 傳入模板渲染
{{ form.field_name.errors }}


3>. AJAX的信息驗證:
Form表單: 有錯直接render從新渲染 錯誤信息
AJAX: 頁面不會主動跳轉(redirect也不會跳轉), JS渲染錯誤信息
1. 後端序列化錯誤信息
data = {'messages':form.errors}
return json.dumps(data) # 原本json只能序列化基本數據類型,但errorsErrorDict(dict)的對象,可序列化
2. 前端獲得信息後,js操做動態顯示
注意: errors = form.errors 默認爲 <ul>標籤
可轉化爲: errors.as_ul()
errors.as_json()
errors.as_data()
相關文章
相關標籤/搜索