中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HTML的form表單和django的form表單

發布時間:2020-08-23 22:53:23 來源:腳本之家 閱讀:181 作者:谷子的 欄目:開發技術

django的表單系統,分2種

  • 基于django.forms.Form的所有表單類的父類
  • 基于django.forms.ModelForm,可以和模型類綁定的Form

直接用原生的form表單,也可以直接用,較麻煩,

django的form表單,也可用可不要,

在views里創建一個類,繼承了forms.Form ,每個字段就是一個輸入框,

#-----
#django 的form表單

from django import forms

class MyForm(forms.Form):
  #forms對應的是前端的form表單,form 表單要驗證的字段
  #都與校驗有關系,與數據庫沒有關系

  #封裝性強,可以 在前端指定顯示那些字段,label 是顯示指定的數據,
  user = forms.CharField(label="用戶名")#輸入的用戶名,
  age = forms.IntegerField(label="年齡")
  email = forms.EmailField()


#form注冊

def reg2(request):
  # 實列化出一個form對象,傳到前端

  form_obj = MyForm()

  return render(request,"reg2.html",{"form_obj":form_obj})

在前端新建一個注冊頁面,前端渲染表單,是后端表單類實例出來的對象,用對象調用每個字段,

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>

</head>
<body>

<h4>form表單使用</h4>
<form action="/reg2/" method="post">
{#  渲染從后端傳來的變量,as_p 是段落#}
  {% csrf_token %}
{#  {{ form_obj.as_p }}#}
  <p>姓名{{ form_obj.user }}</p>
  <p>年齡{{ form_obj.age }}</p>
  <p>郵箱{{ form_obj.email }}</p>

</form>

</body>

</html>

可以從瀏覽器的檢查元素中看到,瀏覽器自動添加了一些東西,

<body>

<h4>form表單使用</h4>
<form action="/reg2/" method="post">

  <input name="csrfmiddlewaretoken" value="GyY3KE5uM7HeErOEZ8OQFwUJYQYaknrOmavdmfufBuVOHdDSWfeHDyt2pjXarGAV" type="hidden">

  <p>姓名<input name="user" required="" id="id_user" type="text"></p>
  <p>年齡<input name="age" required="" id="id_age" type="number"></p>
  <p>郵箱<input name="email" required="" id="id_email" type="email"></p>

</form>
</body>

如果在前端頁面隨便輸入就提交,前端會做校驗,這都是瀏覽器做的校驗,

HTML的form表單和django的form表單

可以自己定制,字段的錯誤信息提示,和顯示信息,

#django 的form表單
 
from django import forms
 
class MyForm(forms.Form):
  #forms對應的是前端的form表單,form 表單要驗證的字段
  #都與校驗有關系,與數據庫沒有關系
 
  #封裝性強,可以 在前端指定顯示那些字段,label 是顯示指定的數據,require 是必須填寫的,
  user = forms.CharField(label="用戶名",min_length=5,max_length=8)#輸入的用戶名,
  age = forms.IntegerField(label="年齡",error_messages={"required":"必填",})
  email = forms.EmailField()
 
 
#form注冊
 
def reg2(request):
 
  errors_obj = " "
  if request.method == "POST":
    form_post = MyForm(request.POST)#拿到請求的所有數據
    if form_post.is_valid():#判斷數據是否合法,返回布爾值,
 
      print("data",form_post.cleaned_data)#獲取數據,得到一個字典格式,
 
    #添加數據庫
    # User.objects.create_user()
  # 實列化出一個form對象,傳到前端
 
    #如果是輸入不合格式的信息,錯誤信息,
    else:
      #獲取錯誤信息
      errors_obj = form_post.errors
 
      # print("error",form_post.errors["user"][0])
      # print("error",form_post.errors["age"])
      # print("error",type(form_post.errors))#字典類型,
 
 
  form_obj = MyForm()
 
  return render(request,"reg2.html",{"form_obj":form_obj,"errors_obj":errors_obj})

在前端頁面

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>

</head>
<body>

<h4>form表單使用</h4>
<form action="/reg2/" method="post">
{#  渲染從后端傳來的變量,as_p 是段落#}
  {% csrf_token %}
{#  {{ form_obj.as_p }}#}
  <p>姓名{{ form_obj.user }} <span>{{ errors.obj.user.0 }}</span> </p>
  <p>年齡{{ form_obj.age }}<span>{{ errors.obj.age.0 }}</span></p>
  <p>郵箱{{ form_obj.email }}<span>{{ errors.obj.email.0 }}</span></p>
  <input type="submit">

</form>

</body>

</html>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永清县| 张家口市| 太仓市| 宕昌县| 渝中区| 通海县| 淅川县| 清水河县| 钟祥市| 新民市| 嵊泗县| 股票| 高雄市| 舞钢市| 大荔县| 锡林郭勒盟| 襄城县| 玛多县| 班玛县| 海林市| 长沙市| 哈巴河县| 乐清市| 巴东县| 科尔| 墨竹工卡县| 乌审旗| 吉林省| 报价| 宜良县| 德兴市| 芜湖市| 三原县| 象州县| 盘锦市| 凤翔县| 牡丹江市| 崇信县| 沐川县| 巴林右旗| 青龙|