day23 Model 操作,Form 验证以及序列化操作
Model 操作
1创建数据库表
定制表名:
联合唯一索引:
只是在联合索引的基础上加了一个unique =True
数据库的查找:
外键的正向查找:
反向查找:
反向查找指定字段数据:
指定反向查找的别名:
在删除外键约束的表中的数据时,是否删除另一张表在使用此数据的数据:
判读数据库中的数据是否为空:
like
between
统计,求和,最大值,最小值
如果你在取这些结果中没有的其他列的数据,Django 会再去数据库操作,但是这样性能就不行了。
自己指定连接那个数据库:
等于:
性能相关:
正常的取会循环一次取一次ut里的name 性能不行,所以需要加上 就会一次全取出来,可以加参数来选择取哪个关联表的数据
指定ut 连接表:
只获取必须数据:
截取时间,生成想得到的格式:
更细粒度的截取及时区转换:
执行原生sql:
Form 验证:
Form 功能:
创建一个完整的数据,为静态的数据,当需要修改时就需要修改此class:
从数据库获取数据,只是第一次会获取最新数据,也就是说数据库在更新后需要重启程序:
实践:
1 forms:
- from django import forms
- from django.forms import fields
- from django.forms import widgets
- from app01 import models
- class UserInfoForm(forms.Form):
- user = fields.CharField(
- required=False,
- widget=widgets.Textarea(attrs={'class':'user'})
- )
- pwd = fields.CharField(
- max_length=12,
- widget=widgets.PasswordInput(attrs={'class':'pwd'})
- )
- #1
- user_type = fields.ChoiceField(
- choices=[],
- widget=widgets.Select
- )
- #2
- user_type2 = fields.CharField(
- widget=widgets.Select(choices=[])
- )
- def __init__(self,*args,**kwargs):
- super(UserInfoForm,self).__init__(*args,**kwargs)
- self.fields['user_type'].choices = models.UserType.objects.values_list('id','name')
- self.fields['user_type2'].widget.choices = models.UserType.objects.values_list('id','name')
views:
- from django.shortcuts import render
- # Create your views here.
- def inedex(request):
- from app01.forms import UserInfoForm
- obj = UserInfoForm()
- return render(request,'index.html',{'obj':obj})
html:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- </head>
- <body>
- <p>{{ obj.user }}</p>
- <p>{{ obj.pwd }}</p>
- <p>{{ obj.user_type }}</p>
- <p>{{ obj.user_type2 }}</p>
- </body>
- </html>
传入参数设置默认值(初始化操作,当打开页面时,select框选择的结果):
form 的更深层次验证,自定义验证:
错误信息捕获:
总结:
序列化操作:
当一个数据不全是python 的数据类型,而是有其他的数据类型,json 就不能序列化此数据,所以需要更细粒度的控制:
使用json 的 default 函数执行细粒度的操作:
给ajax 返回数据时要返回json 但是有一些数据是Django 特有的数据类型,所以需要自定义函数来处理这些数据:
day23 Model 操作,Form 验证以及序列化操作的更多相关文章
- django(7)modelform操作及验证、ajax操作普通表单数据提交、文件上传、富文本框基本使用
一.modelForm操作及验证 1.获取数据库数据,界面展示数据并且获取前端提交的数据,并动态显示select框中的数据 views.py from django.shortcuts import ...
- django(6)model表语句操作、Form操作、序列化操作
1.model建表操作之创建索引.元数据 # 单表操作,创建表 class User(models.Model): name = models.CharField(max_length=32) ema ...
- 04: Form 验证用户数据 & 生成html
目录:Django其他篇 01:Django基础篇 02:Django进阶篇 03:Django数据库操作--->Model 04: Form 验证用户数据 & 生成html 05:Mo ...
- Django中Form验证
Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 一,Form验证 第一种操作:主要是这三个函数 ...
- Django(八)下:Model操作和Form操作、序列化操作
二.Form操作 一般会创建forms.py文件,单独存放form模块. Form 专门做数据验证,而且非常强大.有以下两个插件: fields :验证(肯定会用的) widgets:生成HTML(有 ...
- Day23-Model操作,Form操作和序列化操作
参考源出处:http://blog.csdn.net/fgf00/article/details/54629502 1. 搭建环境请参考:http://www.cnblogs.com/momo8238 ...
- Day24-ModelForm操作及验证
Day23内容回顾--缺失,遗憾成狗. 一:Model(2个功能) -数据库操作: -验证,只有一个clean方法可以作为钩子. 二:Form(专门来做验证的)--------根据form里面写的类, ...
- DRF之简介以及序列化操作
1. Web应用模式. 在开发Web应用中,有两种应用模式: 前后端不分离 2.前后端分离 2. api接口 为了在团队内部形成共识.防止个人习惯差异引起的混乱,我们需要找到一种大家都觉得很好的接口实 ...
- Django使用普通表单、Form、以及modelForm操作数据库方式总结
Django使用普通表单.Form.以及modelForm操作数据库主要应用于增删该查的情景下,流程通用如下,只是实现方式不一样: 进入填写表单页面: 在表单页面填写信息,并提交: 表单数据验证 验证 ...
随机推荐
- HTTP原理及状态码汇总
什么是HTTP: HTTP(HyperText Transfer Protocol超文本传输协议)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准,为了提供一种发布和接收HTM ...
- 用python计算直角三角形斜边长
直接上代码 import math def hypotenuse(a,b): return(math.sqrt(a**2+b**2)) side1 = int(input("第一条直角边:& ...
- web端 css hack(一)
逢10月小长假,几天不敲键盘,浑身难受.也是有时间分享一下自己遇到的css问题.先说一下什么css hack 简单介绍一下css hack: 定义: 一般都是利用各浏览器的支持CSS的能力和BUG来进 ...
- rmtree函数
blog.csdn.net/my2010sam/article/details/8956353
- 五、c++实现离散傅里叶变换
C++离散傅里叶变换 一.序言: 该教程基于之前的图像处理类MYCV,是对其的补充. 二.设计目标 对图像进行简单的离散傅里叶变换,并输出生成的频谱图. 三.需要提前掌握的知识 二维傅里叶变换公式: ...
- 新版graylog2安装过程
Graylog是一个开源的 log 收容器,背后的储存是搭配 mongodb,而搜寻引擎则由 elasticsearch 提供.以前版本主要有两个部分集合而成 server 与 web interfa ...
- [VC]strcpy和strncoy的区别
第一种情况:char* p="how are you ?";char name[20]="ABCDEFGHIJKLMNOPQRS"; strcpy(name,p ...
- Linux I/O调度
一) I/O调度程序的总结 1) 当向设备写入数据块或是从设备读出数据块时,请求都被安置在一个队列中等待完成. 2) 每个块设备都有它自己的队列. 3) I/O调度程序负责维护这些队列的顺 ...
- Python 之私有属性
概要 在基类的定义中,如果有些属性或者方法,我们希望隐藏它,从而不被子类继承,或者使其不被实例直接访问到,这时候可以用到私有属性的命名方法.尽管类的所有属性和方法在某种意义上说都是"暴露的& ...
- Luogu P5008 逛庭院
题目传送门 我校神仙出的神仙题 \(\%\%\%\) 30分 找出所有有入度的点,排序,选前\(k\)个点,好了,30分到手. #include<iostream> #include< ...