27.form組件的使用

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>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章