一篇文章带你了解DjangoForm组件(入门篇)

前言

创新互联建站专注于企业全网整合营销推广、网站重做改版、柯城网站定制设计、自适应品牌网站建设、HTML5建站商城网站定制开发、集团公司官网建设、外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为柯城等各大城市提供网站开发制作服务。

Hey,大家好呀,我是码农,星期八。

本次咱们来get一个新技能,Form组件。

Form组件主要用于验证表单数据。

为什么需要Form组件

注:Form组件,只适用于,前后端未分离的项目中,主要用于验证表单数据,所以,关键字是表单!!!

比如像哔哩哔哩的注册界面。

我点击注册,它不仅仅可以知道我的注册昵称是否存在,密码是否小于6位,手机号格式错误

还会把错误信息一直留在上面,给我提示。

我们就以这个为雏形,来简单的写一个小小的注册界面。

普通版注册

代码

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"] = "手机号格式错误"
  12.     # error为空表示未触发异常
  13.     if not error:
  14.         print("写入数据库", 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 }}
  •         
  •         
  •     
  • 实现效果

    如果填写的信息正常。

    填写信息

    跳转之后

    如果填写的信息错误。

    填写信息

    错误提示

    小总结

    但是你发现虽然能把错误信息显示出来。

    但是我原来填写的东西没了啊!!!,因为html form表单提交是刷新页面提交的!

    雾草,没了,这是少的,如果有十几个???,那不就气死了

    好像我记得我上学时,好多网站都是这。。。好像我也骂了很久,直到前后端分离时,才好一点!

    Form组件版注册

    再使用之前,需要将Django项目的settings.py的LANGUAGE_CODE设置为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": "手机号"})
    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.     # 验证表单数据
    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.             
    9.         {% endfor %}
    10.         
    11.     

    实现效果

    如果填写的信息正常。

    同上

    如果填写的信息错误。


    小总结

    这是我点击提交之后报错的结果!

    可以发现,即使刷新页面提交,还是会把原来的数据保存下来,并且还有验证失败的信息!

    Form总结

    从上述示例可以发现。

    Django Form组件最起码具有以下功能:

    没错,它的主要功能其实也就是这。

    如果使用Django进行开发,并且使没有前后端分离的,必用Form组件!

    每一份发奋努力的背后,必定有巨大的赏赐。

    分享名称:一篇文章带你了解DjangoForm组件(入门篇)
    当前路径:http://www.mswzjz.cn/qtweb/news48/245748.html

    攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等

    广告

    声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能

    贝锐智能技术为您推荐以下文章

    解决方案知识

    各行业网站