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的操作以及验证的更多相关文章

  1. django(7)modelform操作及验证、ajax操作普通表单数据提交、文件上传、富文本框基本使用

    一.modelForm操作及验证 1.获取数据库数据,界面展示数据并且获取前端提交的数据,并动态显示select框中的数据 views.py from django.shortcuts import ...

  2. Django ModelForm操作及验证

    一.内容回顾 Model - 数据库操作 - 验证 class A(MOdel): user = email = pwd = Form - class LoginForm(Form): email = ...

  3. Day24-ModelForm操作及验证

    Day23内容回顾--缺失,遗憾成狗. 一:Model(2个功能) -数据库操作: -验证,只有一个clean方法可以作为钩子. 二:Form(专门来做验证的)--------根据form里面写的类, ...

  4. django基础篇06-ModelForm操作及验证

    本文内容主要来自银角大王的博客 学习大纲: 一.ModelForm 二.Ajax - 原生(jQuery) - 伪Ajax操作 三.文件上传(预览) - Form提交 - Ajax文件上传 四. 图片 ...

  5. Django之ModelForm实际操作使用

    1.定义model数据库字段如下: class User(models.Model): """ 员工信息表用户.密码.职位.公司名(子.总公司).手机.最后一次登录时间. ...

  6. 接口测试入门(3)--使用httpClient进行登录用例操作/set-cookies验证/ List<NameValuePair>设置post参数/json解析

    (最近学的都是很基础的接口测试,都是基于UI界面可见的接口,就是发请求,接收响应,分析返回的结果,校验,对共通模块进行封装,仅此而已,其实做自动化的思路基本都是如此,UI也是.) 现在开始用httpC ...

  7. Python开发【Django】:ModelForm操作

    ModelForm 内容回顾: Model - 数据库操作 - 验证 class A(MOdel): user = email = pwd = Form class LoginForm(Form): ...

  8. Django(八)上:Model操作和Form操作

    ↑↑↑点上面的”+”号展开目录 Model和Form以及ModelForm简介 Model操作: 创建数据库表结构 操作数据库表 做一部分的验证 Form操作: 数据验证(强大) ModelForm ...

  9. Day23-Model操作和Form操作-转载

    参考出处: http://blog.csdn.net/fgf00/article/details/54614706 Model和Form以及ModelForm简介 Model操作: 创建数据库表结构 ...

随机推荐

  1. rabbitmq3.7.5 centos7 集群部署笔记

    1. 准备3台 centos服务器  192.168.233.128    192.168.233.130    192.168.233.131 防火墙放开 集群端口, 这里一并把所有rabbitmq ...

  2. C++ 成员初始化列表

    1.什么是成员初始化列表 #include<iostream> #include<string> using namespace std; class Weapon { pri ...

  3. [转] 理解Object.defineProperty的作用

    对象是由多个名/值对组成的无序的集合.对象中每个属性对应任意类型的值.定义对象可以使用构造函数或字面量的形式: var obj = new Object; //obj = {} obj.name = ...

  4. (转载)C#压缩解压zip 文件

    转载之: C#压缩解压zip 文件 - 大气象 - 博客园http://www.cnblogs.com/greatverve/archive/2011/12/27/csharp-zip.html C# ...

  5. 【ASP.NET】UCenter实现多站点同步注册

    问题描述 上一篇文章写了[ASP.Net]UCenter实现多站点同步登录退出 在整合论坛的时候,同步注册也是相当必要的一个功能:将论坛注册的用户同步到自己的网站,自己网站注册的用户同步到论坛. 官方 ...

  6. Oracle impdp的ignore及 fromuser / touser 功能

    作者:eygle |English [转载时请标明出处和作者信息]|[恩墨学院 OCM培训传DBA成功之道]链接:http://www.eygle.com/archives/2009/09/oracl ...

  7. day 47 htm-part2

    列表 无序列表====所谓无序就是显示出来的效果没有编号排序 <ul type='disc'> <li>第一项</li> <li>第二项</li& ...

  8. day21 模块 异常处理

    常用模块:http://www.cnblogs.com/Eva-J/articles/7228075.html 今日概要: #time # —— 时间:时间戳 字符串 结构化时间 #collectio ...

  9. instance of的java用法

    http://blog.csdn.net/liranke/article/details/5574791

  10. Scala-Unit4-Scala数组/集合

    一.Scala数组 1.数组的定义: 方法一:val arr = new Array[String](3) String代表数据的元素类型.3表示数组的长度 方法二:val arr = Array[I ...