系统运维

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

时间:2010-12-5 17:23:32  作者:系统运维   来源:IT科技类资讯  查看:  评论:0
内容摘要:前言Hey,大家好呀,我是码农,星期八。本次咱们来get一个新技能,Form组件。Form组件主要用于验证表单数据。为什么需要Form组件注:Form组件,只适用于,前后端未分离的项目中,主要用于验证

 

前言

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

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

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

为什么需要Form组件

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

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

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

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

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

普通版注册

代码

urls.py

from django.urls import path from web import views urlpatterns = [     path(reg/,门篇 views.reg,), ] 

web/views.py

def reg(request):     if request.method == "GET":         return render(request, "reg.html")     nick = request.POST.get("nick")     pwd = request.POST.get("pwd")     phone = request.POST.get("phone")     error = { }     if len(pwd) < 6:         error["pwd"] = "密码小于6位"     if len(phone) != 11:         error["phone"] = "手机号格式错误"     # error为空表示未触发异常     if not error:         print("写入数据库", nick, pwd, phone)         return HttpResponse("注册成功")     else:         return render(request, "reg.html", { "error": error}) 

templates/reg.html

<!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>登录</title> </head> <body> <div style="width: 40%;margin: auto">     <form action="" method="post">         <div><input name="nick" type="text" placeholder="昵称"></div>         <div>             <input name="pwd" type="password" placeholder="密码">             <span>{ {  error.pwd }}</span>         </div>         <div>             <input name="phone" type="text" placeholder="手机号">             <span>{ {  error.phone }}</span>         </div>         <div><input type="submit"></div>     </form> </div> </body> </html> 

实现效果

如果填写的信息正常。

填写信息

跳转之后

如果填写的篇文信息错误。云服务器提供商

填写信息

错误提示

小总结

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

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

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

好像我记得我上学时,门篇好多网站都是这。。篇文。章带m组好像我也骂了很久,解D件入直到前后端分离时,才好一点!

Form组件版注册

再使用之前,需要将Django项目的settings.py的LANGUAGE_CODE设置为zh-hans

代码

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

urls.py

同上

web/views.py

from django.shortcuts import render, HttpResponse from django.forms import Form from django.forms import fields from django.forms import widgets # Create your views here. class RegForm(Form):     name = fields.CharField(         widget=widgets.TextInput(attrs={ "placeholder": "昵称"})     )     pwd = fields.CharField(         min_length=6,         widget=widgets.TextInput(attrs={ "placeholder": "密码"})     )     phone = fields.CharField(         min_length=11,         max_length=11,         widget=widgets.TextInput(attrs={ "placeholder": "手机号"})     ) def reg(request):     if request.method == "GET":         form = RegForm()         return render(request, "reg.html", { "form": form})     form = RegForm(request.POST, request.FILES)     # 验证表单数据     if form.is_valid():         result = form.clean()         print(result)         return HttpResponse("登录")     return render(request, "reg.html", { "form": form}) 

templates/reg.html

<!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>登录</title> </head> <body> <div style="width: 40%;margin: auto">     <form action="" method="post" novalidate>         { % for foo in form %}             <div>                 { {  foo }}                 <span style="color: red">{ {  foo.errors.0 }}</span>             </div>         { % endfor %}         <div><input type="submit"></div>     </form> </div> </body> </html> 

实现效果

如果填写的信息正常。

同上

如果填写的信息错误。服务器租用

小总结

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

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

Form总结

从上述示例可以发现。

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

生成HTML标签。 验证提交的数据。 保留提交之前的数据。

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

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

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

copyright © 2025 powered by 益强资讯全景  滇ICP备2023006006号-31sitemap