日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
一篇文章帶你了解DjangoForm組件(入門篇)

前言

創(chuàng)新互聯(lián)建站專注于企業(yè)全網(wǎng)整合營銷推廣、網(wǎng)站重做改版、柯城網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5建站商城網(wǎng)站定制開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為柯城等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

Hey,大家好呀,我是碼農(nóng),星期八。

本次咱們來get一個(gè)新技能,Form組件。

Form組件主要用于驗(yàn)證表單數(shù)據(jù)。

為什么需要Form組件

注:Form組件,只適用于,前后端未分離的項(xiàng)目中,主要用于驗(yàn)證表單數(shù)據(jù),所以,關(guān)鍵字是表單!!!

比如像嗶哩嗶哩的注冊界面。

我點(diǎn)擊注冊,它不僅僅可以知道我的注冊昵稱是否存在,密碼是否小于6位,手機(jī)號格式錯(cuò)誤。

還會把錯(cuò)誤信息一直留在上面,給我提示。

我們就以這個(gè)為雛形,來簡單的寫一個(gè)小小的注冊界面。

普通版注冊

代碼

urls.py

 
 
 
 
  1. from django.urls import path
  2. from web import views
  3. urlpatterns = [
  4.     path('reg/', views.reg,),
  5. ]

web/views.py

 
 
 
 
  1. def reg(request):
  2.     if request.method == "GET":
  3.         return render(request, "reg.html")
  4.     nick = request.POST.get("nick")
  5.     pwd = request.POST.get("pwd")
  6.     phone = request.POST.get("phone")
  7.     error = {}
  8.     if len(pwd) < 6:
  9.         error["pwd"] = "密碼小于6位"
  10.     if len(phone) != 11:
  11.         error["phone"] = "手機(jī)號格式錯(cuò)誤"
  12.     # error為空表示未觸發(fā)異常
  13.     if not error:
  14.         print("寫入數(shù)據(jù)庫", nick, pwd, phone)
  15.         return HttpResponse("注冊成功")
  16.     else:
  17.         return render(request, "reg.html", {"error": error})

templates/reg.html

 
 
 
 
  1.     
  2.     登錄
  3.     
  4.         
  5.         
  6.             
  7.             {{ error.pwd }}
  8.         
  •         
  •             
  •             {{ error.phone }}
  •         
  •         
  •     
  • 實(shí)現(xiàn)效果

    如果填寫的信息正常。

    填寫信息

    跳轉(zhuǎn)之后

    如果填寫的信息錯(cuò)誤。

    填寫信息

    錯(cuò)誤提示

    小總結(jié)

    但是你發(fā)現(xiàn)雖然能把錯(cuò)誤信息顯示出來。

    但是我原來填寫的東西沒了啊!!!,因?yàn)閔tml form表單提交是刷新頁面提交的!

    霧草,沒了,這是少的,如果有十幾個(gè)???,那不就氣死了

    好像我記得我上學(xué)時(shí),好多網(wǎng)站都是這。。。好像我也罵了很久,直到前后端分離時(shí),才好一點(diǎn)!

    Form組件版注冊

    再使用之前,需要將Django項(xiàng)目的settings.py的LANGUAGE_CODE設(shè)置為zh-hans

    代碼

    以下代碼可能看不懂,大概理解就好!

    urls.py

    同上

    web/views.py

     
     
     
     
    1. from django.shortcuts import render, HttpResponse
    2. from django.forms import Form
    3. from django.forms import fields
    4. from django.forms import widgets
    5. # Create your views here.
    6. class RegForm(Form):
    7.     name = fields.CharField(
    8.         widget=widgets.TextInput(attrs={"placeholder": "昵稱"})
    9.     )
    10.     pwd = fields.CharField(
    11.         min_length=6,
    12.         widget=widgets.TextInput(attrs={"placeholder": "密碼"})
    13.     )
    14.     phone = fields.CharField(
    15.         min_length=11,
    16.         max_length=11,
    17.         widget=widgets.TextInput(attrs={"placeholder": "手機(jī)號"})
    18.     )
    19. def reg(request):
    20.     if request.method == "GET":
    21.         form = RegForm()
    22.         return render(request, "reg.html", {"form": form})
    23.     form = RegForm(request.POST, request.FILES)
    24.     # 驗(yàn)證表單數(shù)據(jù)
    25.     if form.is_valid():
    26.         result = form.clean()
    27.         print(result)
    28.         return HttpResponse("登錄")
    29.     return render(request, "reg.html", {"form": form})

    templates/reg.html

     
     
     
     
    1.     
    2.     登錄
    3.     
    4.         {% for foo in form %}
    5.             
    6.                 {{ foo }}
    7.                 {{ foo.errors.0 }}
    8.             
  •         {% endfor %}
  •         
  •     
  • 實(shí)現(xiàn)效果

    如果填寫的信息正常。

    同上

    如果填寫的信息錯(cuò)誤。


    小總結(jié)

    這是我點(diǎn)擊提交之后報(bào)錯(cuò)的結(jié)果!

    可以發(fā)現(xiàn),即使刷新頁面提交,還是會把原來的數(shù)據(jù)保存下來,并且還有驗(yàn)證失敗的信息!

    Form總結(jié)

    從上述示例可以發(fā)現(xiàn)。

    Django Form組件最起碼具有以下功能:

    • 生成HTML標(biāo)簽。
    • 驗(yàn)證提交的數(shù)據(jù)。
    • 保留提交之前的數(shù)據(jù)。

    沒錯(cuò),它的主要功能其實(shí)也就是這。

    如果使用Django進(jìn)行開發(fā),并且使沒有前后端分離的,必用Form組件!

    每一份發(fā)奮努力的背后,必定有巨大的賞賜。


    當(dāng)前題目:一篇文章帶你了解DjangoForm組件(入門篇)
    文章起源:http://www.dlmjj.cn/article/dhdiioo.html