HTML的form表單和django的form表單
django的表單系統(tǒng),分2種
- 基于django.forms.Form的所有表單類(lèi)的父類(lèi)
- 基于django.forms.ModelForm,可以和模型類(lèi)綁定的Form
直接用原生的form表單,也可以直接用,較麻煩,
django的form表單,也可用可不要,
在views里創(chuàng)建一個(gè)類(lèi),繼承了forms.Form ,每個(gè)字段就是一個(gè)輸入框,
#----- #django 的form表單 from django import forms class MyForm(forms.Form): #forms對(duì)應(yīng)的是前端的form表單,form 表單要驗(yàn)證的字段 #都與校驗(yàn)有關(guān)系,與數(shù)據(jù)庫(kù)沒(méi)有關(guān)系 #封裝性強(qiáng),可以 在前端指定顯示那些字段,label 是顯示指定的數(shù)據(jù), user = forms.CharField(label="用戶(hù)名")#輸入的用戶(hù)名, age = forms.IntegerField(label="年齡") email = forms.EmailField() #form注冊(cè) def reg2(request): # 實(shí)列化出一個(gè)form對(duì)象,傳到前端 form_obj = MyForm() return render(request,"reg2.html",{"form_obj":form_obj})
在前端新建一個(gè)注冊(cè)頁(yè)面,前端渲染表單,是后端表單類(lèi)實(shí)例出來(lái)的對(duì)象,用對(duì)象調(diào)用每個(gè)字段,
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h3>form表單使用</h3> <form action="/reg2/" method="post"> {# 渲染從后端傳來(lái)的變量,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>
可以從瀏覽器的檢查元素中看到,瀏覽器自動(dòng)添加了一些東西,
<body> <h3>form表單使用</h3> <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>
如果在前端頁(yè)面隨便輸入就提交,前端會(huì)做校驗(yàn),這都是瀏覽器做的校驗(yàn),
可以自己定制,字段的錯(cuò)誤信息提示,和顯示信息,
#django 的form表單 from django import forms class MyForm(forms.Form): #forms對(duì)應(yīng)的是前端的form表單,form 表單要驗(yàn)證的字段 #都與校驗(yàn)有關(guān)系,與數(shù)據(jù)庫(kù)沒(méi)有關(guān)系 #封裝性強(qiáng),可以 在前端指定顯示那些字段,label 是顯示指定的數(shù)據(jù),require 是必須填寫(xiě)的, user = forms.CharField(label="用戶(hù)名",min_length=5,max_length=8)#輸入的用戶(hù)名, age = forms.IntegerField(label="年齡",error_messages={"required":"必填",}) email = forms.EmailField() #form注冊(cè) def reg2(request): errors_obj = " " if request.method == "POST": form_post = MyForm(request.POST)#拿到請(qǐng)求的所有數(shù)據(jù) if form_post.is_valid():#判斷數(shù)據(jù)是否合法,返回布爾值, print("data",form_post.cleaned_data)#獲取數(shù)據(jù),得到一個(gè)字典格式, #添加數(shù)據(jù)庫(kù) # User.objects.create_user() # 實(shí)列化出一個(gè)form對(duì)象,傳到前端 #如果是輸入不合格式的信息,錯(cuò)誤信息, else: #獲取錯(cuò)誤信息 errors_obj = form_post.errors # print("error",form_post.errors["user"][0]) # print("error",form_post.errors["age"]) # print("error",type(form_post.errors))#字典類(lèi)型, form_obj = MyForm() return render(request,"reg2.html",{"form_obj":form_obj,"errors_obj":errors_obj})
在前端頁(yè)面
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h3>form表單使用</h3> <form action="/reg2/" method="post"> {# 渲染從后端傳來(lái)的變量,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>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- html form表單基礎(chǔ)入門(mén)案例講解
- php 下 html5 XHR2 + FormData + File API 上傳文件操作實(shí)例分析
- PHP使用HTML5 FormData對(duì)象提交表單操作示例
- Asp.net webForm設(shè)置允許表單提交Html的方法
- Java Web使用Html5 FormData實(shí)現(xiàn)多文件上傳功能
- transform實(shí)現(xiàn)HTML5 video標(biāo)簽視頻比例拉伸實(shí)例詳解
- C#通過(guò)html調(diào)用WinForm的方法
- HTML form表單提交方法案例詳解
相關(guān)文章
Python SMTP發(fā)送郵件遇到的一些問(wèn)題及解決辦法
今天小編就為大家分享一篇關(guān)于Python SMTP發(fā)送郵件遇到的一些問(wèn)題及解決辦法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10python實(shí)現(xiàn)簡(jiǎn)單的井字棋游戲(gui界面)
這篇文章主要介紹了python如何實(shí)現(xiàn)簡(jiǎn)單的井字棋游戲,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2021-01-01Python數(shù)據(jù)分析與處理(二)——處理中國(guó)地區(qū)信息
這篇文章主要介紹了Python數(shù)據(jù)分析與處理-處理中國(guó)地區(qū)信息,上文介紹了北京高考分?jǐn)?shù)線統(tǒng)計(jì)分析,這篇文章依然圍繞Python數(shù)據(jù)分析與處理的相關(guān)資料來(lái)介紹處理中國(guó)地區(qū)信息,需要的朋友可以參考一下2021-12-12Python使用BeautifulSoup庫(kù)解析HTML基本使用教程
這篇文章主要介紹了Python使用BeautifulSoup庫(kù)解析HTML基本使用教程,文中主要對(duì)其適合于制作爬蟲(chóng)方面的特性進(jìn)行了解析,需要的朋友可以參考下2016-03-03pycharm雙擊無(wú)響應(yīng)(打不開(kāi)問(wèn)題解決辦法)
這篇文章主要介紹了pycharm雙擊無(wú)響應(yīng)(打不開(kāi)問(wèn)題解決辦法),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01關(guān)于AnacondaNavigator?Jupyter?Notebook更換Python內(nèi)核的問(wèn)題
因?yàn)樾掳惭b的Anaconda?Navigator默認(rèn)安裝了一個(gè)Python,Jupyter?Notebook默認(rèn)使用的內(nèi)核就是這個(gè)Python,跟我系統(tǒng)安裝好的Python沖突了,下面小編給大家介紹AnacondaNavigator?Jupyter?Notebook更換Python內(nèi)核的問(wèn)題,需要的朋友可以參考下2022-02-02PyCharm更換pip源、模塊安裝以及PyCharm依賴(lài)包導(dǎo)入導(dǎo)出功能
這篇文章主要給大家介紹了關(guān)于PyCharm更換pip源、模塊安裝以及PyCharm依賴(lài)包導(dǎo)入導(dǎo)出功能的相關(guān)資料,我們?cè)谑褂胮ycharm的時(shí)候,pycharm中的虛擬環(huán)境依賴(lài)包需要導(dǎo)出成一個(gè)文件,需要的朋友可以參考下2023-11-11Tensorflow實(shí)現(xiàn)多GPU并行方式
今天小編就為大家分享一篇Tensorflow實(shí)現(xiàn)多GPU并行方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02