导图社区 django组件、forms知识点学习框架笔记
django组件、forms知识点学习框架笔记,一张图带你完全了解相关内容,通过思维导图帮你提高效率,赶紧来试一试吧~
编辑于2022-11-30 15:46:38 广东django组件、forms知识点学习框架笔记
models
ORM
对象关系映射
通过对对象方法进行调用实现对数据库的增删改插
步骤
配置数据信息
project/settintgs.py
DATABASES
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'kk3', 'HOST' : '127.0.0.1', 'PORT' : 3306, 'USER' : 'root', 'PASSWORD' : '881019', 'CHARSET' : 'utf8', } }
定义Model
app/models.py
继承
django.db.models.Model
属性
类属性
定义表的结构(name,属性)
varchar
models.CharField
max_length=256
int
models.IntegerField
text
models.TextField
datetime
models.DateTimeField
同步数据库表结构
数据库描述文件
版本管理
python manage.py makemigrations
python manage.py sqlmigrate appname version
同步数据表结构
python manage.py migrate
模型新加字段
对旧数据的影响
null=True
null=False
default=value
改字段类型
尽量不要做
加新字段
旧字段废弃
测试
django交互式环境
python manage.py shell
导入
from appname.models import ClassModel
from appname import models
models.ClassModel
增
添加新的纪录
创建新的实例
instance = ClassModel(**kwargs)
instance.varname = value
instance.save()
存储
varname=value
id=1
instance.varname = value1
instance.save()
更新
varname=value1
id=1
查
数据记录
所有的
ClassModel.objects.all()
条件过滤
filter
name__exact='kk'
name='kk'
name__contains='kk'
id__gte=5
varname__condition=value
exclude
get
类似filter
差异
查询结果
一条数据
没有结果/有多条满足添加的结果
抛出异常
不在
ObjectDoesNotExist
常用在主键查找/唯一索引
数据量
所有的
ClassModel.objects.count()
排序
order_by
查询出结果再排序
ClassModel.objects.all().order_by("varname")
ClassModel.objects.all().order_by("-varname")
ClassModel.objects.all().order_by("varname", "varname2", "varname3")
filter
分页
ClassModel.objects.all().order_by()[start:end]
start
>=0
end
>=0
聚合
最大值,最小值,平均值,总和
django.db.models.Avg, Sum, Max, Min, Count
ClasssModel.objects.aggregate(avg=Avg(age),sum=Sum(age), max=Max(age), min=Min(age), count=Count(age))
ClasssModel.objects.filter().aggregate(avg=Avg(age),sum=Sum(age), max=Max(age), min=Min(age), count=Count(age))
分类
ClassModel.objects.values(varname, varname1).annotate(count=Count('*'))
删
先查再删
删除所有
ClassModel.objects.all().delete()
按条件
ClassModel.objects.filter(varname__condition=value).delete()
某个对象
ClassModel.objects.get(pk=value).delte()
改
先查再改
所有/条件
update
ClassModel.objects.all().update(varname=value)
ClassModel.objects.filter().update(varname=value, varname1=value1)
某个对象
instance = ClassModel.objects.get(pk=value)
instance.varname = value
instance.save()
自定义sql语句执行
django.db.connection
MySQLdb.connect()
connect.cursor()
forms
步骤
定义form
继承
django.forms.Form
属性
类的属性
input type=text
forms.CharField
input type=password
forms.CharField(widget=forms.PasswordInput)
input type=hiddent
forms.CharField(widget=forms.Hiddeninput)
textarea
forms.CharField(widget=forms.Textarea)
组件属性
label
error_messages
dict
key
required
required=True
widget
自定义验证
重写父类的clean
cleaned_data = Super(SelfClassName, self).clean()
cleand_data = Super().clean()
cleaned_data.get('key', '')
检查
错误
forms.ValidationError("xxxxx")
return cleaned_data
新加的
clean_username
clean_xxxx
value = self.cleaned_data.get(key, '')
检查
错误
forms.ValidationError("xxxx")
return value
显示
实例化
form = ClassForm()
创建
form= ClassForm({key : value, key1: value2})
编辑
obj = ClassModel.objects.get(pk=value)
obj_dict = {key : obj.key, key2: obj.key2}
form = ClassForm(obj_dict)
render(request, tpl, {'form' : form}
form.as_p
form.as_ul
form.as_table
提交
views
request.GET/request.POST
form = ClassForm(request.GET/request.POST)
验证
form.is_valid()
True
数据操作/session
form.cleaned_data.get(key, '')
False
render(request, tpl, {'form' : form})