Django之Form验证初阶实战示例(验证篇二)
上一篇:Django之Form验证初识(Form验证篇一)点击跳转
目录篇:Django之Form及ModelForm目录篇 点击跳转
下一篇:Django之Form验证进阶常用字段注释示例(验证篇三)点击跳转
目录
- 1.创建Django项目
- 2.创建app(并且app目录下创建一个urls.py文件)
- 3.定义请求的URL路由分发
- 4.定义app下的URL路由
- 5.url对应函数
- 6.前端通过form对象调用字段相关信息
- 7.启动Django
- 8.浏览器访问URL结果
1.创建Django项目
Django之创建项目【二】:https://blog.csdn.net/Burgess_zheng/article/details/86505526
2.创建app(并且app目录下创建一个urls.py文件)
进入项目目录下
创建app命令:
F:\Burgess\Python\pycharm实验脚本\test\project_burgess>python manage.py startapp burgess_form
3.定义请求的URL路由分发
路径:project_burgess/project_burgess/urls.py
[code]from django.contrib import admin from django.urls import path,re_path #Django版本2.0以上 from project_burgess import views from django.conf.urls import url #Django2.0 from django.conf.urls import include urlpatterns = [ path('admin/', admin.site.urls), #form re_path('burgess_form/', include("burgess_form.urls")), # url(r'^burgess_form/', include("burgess_form.urls")), ]
4.定义app下的URL路由
路径:project_burgess/burgess_form/urls.py
[code]__author__ = "Burgess Zheng" #!/usr/bin/env python #-*- coding:utf-8 -*- from django.urls import path,re_path #Django版本2.0以上 from burgess_form import views from django.conf.urls import url #Django2.0 urlpatterns = [ re_path('fm/',views.fm), #url(r'^fm/', views.fm), ]
5.url对应函数
1.自定义form字段验证类
2.实例化form对象(初始化信息)并把该form对象对象返回前端(前端可根据该对象调用字段相关信息)
3.前端提交的数据进行验证提取正确or错误信息及响应错误信息(把form对象返回,前端可以调用验证错误信息)
路径:project_burgess/burgess_form/views.py
[code] from django.shortcuts import render # Create your views here. __author__ = "Burgess Zheng" from django import forms from django.forms import fields from django.forms import widgets class FM(forms.Form): #字段本身只做验证 user = fields.CharField( error_messages={'required':'用户名不能为空.'}, widget=widgets.Textarea(attrs={'class':'c1'}), #定义插件:修改form生成的input标签type类型为:多行文本 添加class='c1' label="用户名", # initial='请输入用户名', ) pwd = fields.CharField( max_length=12, min_length=6, error_messages={'required':'密码不能为空.', 'min_length':'密码长度不能小于6', 'max_length': '密码长度不能大于12',}, widget=widgets.PasswordInput ) email = fields.EmailField(error_messages={ 'required': '邮箱不能为空.', 'invalid':'邮箱格式错误', }) f = fields.FileField() p = fields.FilePathField(path='burgess_form') city = fields.ChoiceField( choices=[(0,'上海'),(1,'广州'),(2,'深圳')] ) mcity = fields.MultipleChoiceField( choices=[(0,'上海'),(1,'广州'),(2,'深圳')] ) def fm(request): if request.method == "GET": #获取编辑的默认数据,从数据库拿弄成字典 dic ={ "user":'r1', "pwd" :'123123', "email":'sdsfs', "city":1, "mcity":[1,2], } obj = FM(initial=dic) #示例话form对象并且进行初始化标签数据(也就是form生成的标签字段值) return render(request,'fm.html',{'obj':obj}) #前端可根据obj该form对象进行应用字段标签和错误信息 elif request.method == "POST": #获取用户所有的数据 #每条数据请求的验证 #验证成功:获取所有的正确的信息 #验证失败:显示错误信息 #实现以上自己写正则表达式也可以做到,但是代码量太大 #所有django提供个form组件 obj = FM(request.POST,request.FILES) #把接收的数据当做实参 #request.FILES 接收文件 r1 = obj.is_valid()#进行验证,验证以后,成功返回true,失败返回false print(r1) if r1: #如果上传文件提交的话,数据也在obj.cleaned_data,key为f,数据为value, # 通过我们之前学的接收上传数据就可以了 print(obj.cleaned_data)#成功打印用户输入的数据(字典形式) # models.UserInf.objects.create(**obj.cleaned_data) #如果输入正确,获取的字典形式数据直接就添加到数据库 else: #ErrorDict print(obj.errors['user'][0])#验证不成功,打印错误(字符串标签显示) print(obj.errors.as_json()) # 验证不成功,打印错误(字典显示) return render(request,'fm.html',{'obj':obj}) #一定要返回obj该form对象,这样前端才可以调用错误信息 return render(request,'fm.html')
6.前端通过form对象调用字段相关信息
涉及csrf:Django之CSRF XSS原理解析【交互篇四】https://blog.csdn.net/Burgess_zheng/article/details/86548425
路径:project_burgess/templates/fm.html
[code]<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <form action="/burgess_form/fm/" method="POST" enctype="multipart/form-data"> {% csrf_token %} <p>{{ obj.user.label }}{{ obj.user }}{{ obj.errors.user.0 }}</p> <!-- obj.user.label: 调用我们自定义form对象的字段名 obj.user:调用我们自定义form对象的标签 obj.errors.user.0 #调用我们自定义对象的验证错误信息标签 --> <p>{{ obj.pwd }}{{ obj.errors.pwd.0 }}</p> <p>{{ obj.email }}{{ obj.errors.email.0 }}</p> <p>{{ obj.f }}{{ obj.errors.f.0 }}</p> <p>{{ obj.p }}</p> <p>{{ obj.city }}</p> <p>{{ obj.mcity }}</p> <input type="submit" value="提交"/> <p>----三种比较简单的方法如下(不推荐,自定制差)------</p> <p>------------obj.as_p-------------</p> {{ obj.as_p }} <input type="submit" value="提交"/> <p>-------------as_ul---------------</p> {{ obj.as_ul }} <input type="submit" value="提交"/> <p>-------------as_table----- -------</p> <table> {{ obj.as_table }} </table> <input type="submit" value="提交"/> </form> </body> </html>
7.启动Django
手动:python manage.py runserver 127.0.0.1:8000
pycharm:
8.浏览器访问URL结果
get请求
注释掉3中简单的的标签应用
正确点击提交
后台查看
错误提交(后端错误是注释掉的)
提交前
提交后
后台查看
上一篇:Django之Form验证初识(Form验证篇一)点击跳转
目录篇:Django之Form及ModelForm目录篇 点击跳转
下一篇:Django之Form验证进阶常用字段注释示例(验证篇三)点击跳转
- django之modelform验证实战示例演示(验证篇七)
- 27)django-form操作示例(动态Select数据,自定义字段验证,全局验证等)
- Django之Form验证进阶常用字段注释示例(验证篇三)
- Django之Form验证之Ajax两种返回错误信息示例(验证篇四)
- Django之Form验证clean方法(验证篇六)
- Django_form验证
- Python菜鸟之路:Django 数据验证之钩子和Form表单验证
- django 的ajax 请求,使用form的验证机制。
- 分别用(Windows/Form/Soap/WebService)实现用户身份验证(含示例代码下载)
- django项目培训站-18-form表单验证-表单验证类-视图类代替函数
- Django--form验证及错误处理
- jQuery formValidator表单验证插件开源了!!含API帮助、源码、示例
- jQuery formValidator表单验证插件,适合行业网页(表单元素密集型)的表单验证示例(转载)
- Django实战之用户验证登录
- Django-Form表单验证
- [py][mx]django form验证-给db减压
- 框架----Django之Form提交验证(一)
- 使用Django的ModelForm对表单进行自动验证(可自定义验证规则)
- django admin ModelForm field 验证
- Django Form源码分析之BaseForm验证逻辑