国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 轮台县| 密山市| 都江堰市| 兴仁县| 垣曲县| 牡丹江市| 雷州市| 孟津县| 济阳县| 广饶县| 宁晋县| 墨玉县| 潍坊市| 达孜县| 砀山县| 县级市| 商丘市| 上高县| 黔西| 泌阳县| 龙陵县| 辽源市| 长沙市| 昂仁县| 天津市| 蓝山县| 镇雄县| 田阳县| 丁青县| 北碚区| 峡江县| 嘉善县| 平和县| 平潭县| 镇赉县| 南充市| 二连浩特市| 甘洛县| 鞍山市| 漳州市| 大埔县|