modelform的操作以及验证
1,model的两个功能
1,数据库操作
2,验证只有一个clean方法作为钩子来操作,方法比较少
2,form(专门用来做验证的) 根据form里面写的类,类里面的字段,这些字段里有内置的的正则表达式
一。基于form来做的过程
创建两张表,两张表之间用Foreignkey进行关联
生成表
如果现再index.html的页面中对UserInfo表进行操作,那么应该把该表格中的所有信息从后台传过来,把所有的字段重新创建一遍(用form的化,需要自己写field字段,用modelForm,字段可以从类里面去提取过来)
from django.shortcuts import render
from django import forms
from django.forms import fields
from app1 import models #基于form来做的数据展示
class UserInfoForm(forms.Form):
username = fields.CharField(max_length=32,label='用户名')
email = fields.EmailField()
user_type = fields.ChoiceField(
choices=models.UserType.objects.values_list('id','caption')
) def __init__(self,*args,**kwargs):#继承了UserInfoForm这张表格,并且将他重构
super(UserInfoForm,self.__init__(*args,**kwargs))
self.fields['user_type'].choices = models.UserType.objects.values_list('id','caption')
#每次都将表中的信息全部都更新 def index(request):
if request.method=='GET':
obj = UserInfoForm()
return render(request,'index.html',{'obj':obj})
elif request.method=='POST':
obj = UserInfoForm(request.POST)
print(obj.is_valid())
print(obj.cleaned_data)
print(obj.errors)
# models.UserInfo.objects.create(**obj.cleaned_data)#创建信息
return render(request,'index.html',{'obj':obj})
"""
#基于modelform来做的数据信息展示
class UserInfoModelForm(forms.ModelForm):#form下的modelform方法
class Meta:
model = models.UserInfo#指去哪个类里面去获取字段
fields='__all__'#指的是所有的字段
#fields=['username','email']#显示指定字段
# exclude=['username']#排除某一项
def index(request):
if request.method =='GET':
obj = UserInfoModelForm()
return render(request,'index.html',{'obj':obj})
elif request.method=='POST':
obj = UserInfoModelForm(request.POST)
print(obj.is_valid())#验证是不是通过
print(obj.cleaned_data)#验证所有的数据
print(obj.errors)
return render(request,'index.html',{'obj':obj})
"""
注释部分为modelform来做数据展示的views代码,其余部分为基于model的数据展示
用form方法的时候,验证功能的函数其实是写在BaseForm里的:
UserInfoForm-->继承了Form--->继承了BaseForm(is_valid......)
点击提交的时候,modelform也可以做验证
UserInfoModelForm-->继承了ModelForm--->继承了BaseModelForm--->继承了BaseForm(is_valid......)
modelform的操作以及验证的更多相关文章
- django(7)modelform操作及验证、ajax操作普通表单数据提交、文件上传、富文本框基本使用
一.modelForm操作及验证 1.获取数据库数据,界面展示数据并且获取前端提交的数据,并动态显示select框中的数据 views.py from django.shortcuts import ...
- Django ModelForm操作及验证
一.内容回顾 Model - 数据库操作 - 验证 class A(MOdel): user = email = pwd = Form - class LoginForm(Form): email = ...
- Day24-ModelForm操作及验证
Day23内容回顾--缺失,遗憾成狗. 一:Model(2个功能) -数据库操作: -验证,只有一个clean方法可以作为钩子. 二:Form(专门来做验证的)--------根据form里面写的类, ...
- django基础篇06-ModelForm操作及验证
本文内容主要来自银角大王的博客 学习大纲: 一.ModelForm 二.Ajax - 原生(jQuery) - 伪Ajax操作 三.文件上传(预览) - Form提交 - Ajax文件上传 四. 图片 ...
- Django之ModelForm实际操作使用
1.定义model数据库字段如下: class User(models.Model): """ 员工信息表用户.密码.职位.公司名(子.总公司).手机.最后一次登录时间. ...
- 接口测试入门(3)--使用httpClient进行登录用例操作/set-cookies验证/ List<NameValuePair>设置post参数/json解析
(最近学的都是很基础的接口测试,都是基于UI界面可见的接口,就是发请求,接收响应,分析返回的结果,校验,对共通模块进行封装,仅此而已,其实做自动化的思路基本都是如此,UI也是.) 现在开始用httpC ...
- Python开发【Django】:ModelForm操作
ModelForm 内容回顾: Model - 数据库操作 - 验证 class A(MOdel): user = email = pwd = Form class LoginForm(Form): ...
- Django(八)上:Model操作和Form操作
↑↑↑点上面的”+”号展开目录 Model和Form以及ModelForm简介 Model操作: 创建数据库表结构 操作数据库表 做一部分的验证 Form操作: 数据验证(强大) ModelForm ...
- Day23-Model操作和Form操作-转载
参考出处: http://blog.csdn.net/fgf00/article/details/54614706 Model和Form以及ModelForm简介 Model操作: 创建数据库表结构 ...
随机推荐
- vue 踩坑记录
1.绑定双击事件用 @dblclick 不要用@ondblclick 在vue中@=on 2.Vue中路由跳转踩坑. 比如我的路由如下定义 routes: [ { path: "/&quo ...
- ES6中const、let与var的对比详解
对比 声明方式 变量提升 作用域 初始值 重复定义const 否 块级 需要 不允许let 否 块级 不需要 不允许var 是 函数级 不需要 允许 变量提升:const 和 l ...
- C# 会话,进程,线程,线程安全
会话->进程->线程 b/s网站中,每个用户的访问为一次会话,会话中包含CPU为用户在内存中开辟空间存储的会话信息, 如Session,进程,会话拥有一个进程,同一进程下可以拥有多个线程. ...
- Windows下Mongodb启动问题
把mongodb安装完,运行server出现问题
- Rookey.Frame企业级极速开发框架
项目详细介绍 Rookey.Frame是一套基于.NET MVC + easyui的企业级极速开发框架,支持简单逻辑模块零代码编程.支持工作流(BPM).支持二次开发,具有高扩展性.高复用性.高伸缩性 ...
- form表单总结
form表单是一个基础的表单控件,最近做扫码登陆使用到,在这里记录一下 <form action="url" method="get" target=&q ...
- git之一: git基础
参考: SourceTree使用 git教程 廖学风git 文档1 文档2 1. git 概念介绍 工作区: 就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区,工作区下面有. ...
- HTML5拖放牛刀小试
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- bufferedwriter写json文件中文乱码
需要用writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),"utf-8& ...
- Scala-Unit4-Scala数组/集合
一.Scala数组 1.数组的定义: 方法一:val arr = new Array[String](3) String代表数据的元素类型.3表示数组的长度 方法二:val arr = Array[I ...