国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > 幫助中心 > 正文

Django Form and ModelForm的區(qū)別與使用

2024-07-09 22:42:18
字體:
供稿:網(wǎng)友

Form介紹

在HTML頁面中利用form表單向后端提交數(shù)據(jù)時,都會寫一些獲取用戶輸入的標簽并且用form標簽把它們包起來。

與此同時我們在好多場景下都需要對用戶的輸入做校驗,比如校驗用戶是否輸入,輸入的長度和格式等正不正確。如果用戶輸入的內(nèi)容有錯誤就需要在頁面上相應(yīng)的位置顯示對應(yīng)的錯誤信息.。

Django form組件就實現(xiàn)了上面所述的功能。

總結(jié)一下,其實form組件的主要功能如下:

生成頁面可用的HTML標簽 對用戶提交的數(shù)據(jù)進行校驗 保留上次輸入內(nèi)容

普通方式手寫注冊功能

views.py

# 注冊def register(request): error_msg = "" if request.method == "POST":  username = request.POST.get("name")  pwd = request.POST.get("pwd")  # 對注冊信息做校驗  if len(username) < 6:   # 用戶長度小于6位   error_msg = "用戶名長度不能小于6位"  else:   # 將用戶名和密碼存到數(shù)據(jù)庫   return HttpResponse("注冊成功") return render(request, "register.html", {"error_msg": error_msg})

login.html

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>注冊頁面</title></head><body><form action="/reg/" method="post"> {% csrf_token %} <p>  用戶名:  <input type="text" name="name"> </p> <p>  密碼:  <input type="password" name="pwd"> </p> <p>  <input type="submit" value="注冊">  <p >{{ error_msg }}</p> </p></form></body></html>

使用form組件實現(xiàn)注冊功能

views.py

先定義好一個RegForm類:

from django import forms# 按照Django form組件的要求自己寫一個類class RegForm(forms.Form): name = forms.CharField(label="用戶名") pwd = forms.CharField(label="密碼")

再寫一個視圖函數(shù):

# 使用form組件實現(xiàn)注冊方式def register2(request): form_obj = RegForm() if request.method == "POST":  # 實例化form對象的時候,把post提交過來的數(shù)據(jù)直接傳進去  form_obj = RegForm(request.POST)  # 調(diào)用form_obj校驗數(shù)據(jù)的方法  if form_obj.is_valid():   return HttpResponse("注冊成功") return render(request, "register2.html", {"form_obj": form_obj})

login2.html

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>注冊2</title></head><body> <form action="/reg2/" 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.pwd.id_for_label }}">{{ form_obj.pwd.label }}</label>   {{ form_obj.pwd }} {{ form_obj.pwd.errors.0 }}  </div>  <div>   <input type="submit" class="btn btn-success" value="注冊">  </div> </form></body></html>
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 凤城市| 太谷县| 兰州市| 万盛区| 揭东县| 化隆| 巴林左旗| 聂荣县| 美姑县| 富锦市| 玛纳斯县| 吕梁市| 乐昌市| 柯坪县| 江西省| 西安市| 永登县| 隆子县| 营口市| 莱西市| 凤台县| 怀柔区| 山丹县| 峨眉山市| 麻江县| 蒙阴县| 舒兰市| 车致| 翁源县| 城步| 托克逊县| 神木县| 北宁市| 梁山县| 布尔津县| 沁水县| 唐海县| 根河市| 蒙自县| 灌阳县| 瓦房店市|