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. FATAL Fatal error during KafkaServerStable startup. Prepare to shutdown (kafka.server.KafkaServerStartable) java.io.FileNotFoundException: /tmp/kafka-logs/.lock (Permission denied)

    1.启动kafka的时候,报错如下所示: [-- ::,] INFO zookeeper state changed (SyncConnected) (org.I0Itec.zkclient.ZkCl ...

  2. BZOJ 4282(慎二的随机数列

    题解: 网上题解还没看 我的方法是用平衡树维护一个单调栈 由于N用了一定是赚的 所以它的作用是让f[i+1]=f[i]+1 这个是可以记录的 就跟noip蚯蚓那题一样 然后插入一个值的时候查询前面的最 ...

  3. makefile:n: *** missing separator. Stop

    makefile has a very stupid relation with tabs, all actions of every rule are identified by tabs .... ...

  4. window下用taskkill杀死进程

    TASKKILL [/S system [/U username [/P [password]]]] { [/FI filter] [/PID processid | /IM imagename] } ...

  5. BZOJ3172 [Tjoi2013]单词 字符串 SA ST表

    原文链接http://www.cnblogs.com/zhouzhendong/p/9026543.html 题目传送门 - BZOJ3172 题意 输入$n(n\leq 200)$个字符串,保证长度 ...

  6. Nginx的配置安装和使用

    http://blog.csdn.net/e421083458/article/details/30086413 以后继续更新

  7. String.IsNullorEmpty()方法的使用

    != null 就是不为null !string.IsNullOrEmpty  不是null且不是""(string.Empty)

  8. hdu1202解题报告

    #include<stdio.h>int main(){    int n,i;    double sum,s,p,sum1;    while(scanf("%d" ...

  9. POJ 3090 Visible Lattice Points 【欧拉函数】

    <题目链接> 题目大意: 给出范围为(0, 0)到(n, n)的整点,你站在(0,0)处,问能够看见几个点. 解题分析:很明显,因为 N (1 ≤ N ≤ 1000) ,所以无论 N 为多 ...

  10. Java高级面试题解析(一)

    最近,在看一些java高级面试题,我发现我在认真研究一个面试题的时候,我自己的收获是很大的,我们在看看面试题的时候,不仅仅要看这个问题本身,还要看这个问题的衍生问题,一个问题有些时候可能是一个问题群( ...