1.form組件的作用?
我們在前端寫form組件向後端提交數據,後端進行校驗,form組件可以幫我們生成標籤並實現這兩個需求,使開發更加方便。
2.form組件的簡單使用
在視圖函數中:
class RegForm(forms.Form):
name = forms.fields.CharField(
label="用戶名",
min_length=8,
initial="請輸入用戶名",
error_messages={
"required": "不能爲空", #爲空時的錯誤提示
"invalid": "格式錯誤", #不正確是的錯誤提示
"min_length": "用戶名最短8位" #不符合最小長度時的錯誤提示
}
)
password = forms.CharField(
label = "密碼", #顯示的值
min_length = 6, #最小長度
initial = "請輸入密碼" #初始時的值
)
def register(request):
# 使用組件使,先實例化一個form對象,並傳給模板進行渲染
form_obj = RegForm()
if request.method == "POST": #如果是post請求,獲取數據並校驗
form_obj = RegForm(request.POST) # 將post請求拿到的數據封裝到form對象中
if form_obj.is_valid(): # 調用is_valid()方法,檢驗post請求的數據
return HttpResponse("註冊成功")
return render(request, "register.html", {"form_obj": form_obj})
在模板文件中:
<body>
<form action="" method="post" novalidate autocomplete="off">
{% csrf_token %}
<div>
<label for="{{ form_obj.name.id_for_label }}">{{ form_obj.name.label }}</label>
{{ form_obj.name }}{{ form_obj.name.errors.0 }}
</div>
<div>
<label for="{{ form_obj.password.id_for_label }}">{{ form_obj.password.label }}</label>
{{ form_obj.password }}{{ form_obj.password.errors.0 }}
</div>
<button>註冊</button>
</form>
</body>