django模型系统一
Posted mmll0911
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django模型系统一相关的知识,希望对你有一定的参考价值。
一、复习
代码布局(代码放在哪里)
- app目录下:必需放在app目录下
- templatetags文件夹,不能写错一个字符
- app必需注册
1.自定义过滤器
为什么(案例:男:1,女:0...怎么展示)
定义:过滤器就是一个函数。
--有1到2个参数
--第一个参数传进来的是模板变量。(过滤器必需依赖模板变量)
--第二个参数其他的参数
--return你想要显示的数据
注册过滤器:
from django.template import Library
register=Library() 这个变量名不能写错
方法一:register.filter(过滤器名)
方法二:@register.filter(name=取个名)
在模板上去使用:
--load模块:{%load模块名%}
--{{模板变量|过滤器:参数}}
2.自定义标签
--简单标签
作用:实现更复杂的逻辑
定义:
简单标签也就是个普通的Python函数。
--有n个参数
--返回值就是你想要的数据
注册:
from django.template import Library
register=Library()
@register.simple_tag(name=取个名)
使用:
--load 模块
--{%标签 参数1,参数2 ...%}
使用上下文变量:
@register simple_tag(takes_context=True)
定义标签函数的时候,第一个参数必需命名为context,它就会被传入上下文变量的值。
--包含标签
......
二、模型基础
1.django ORM介绍
ORM:对象关系映射(用Python的概念表达数据库)
对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。
2.数据库的配置(mysql)
先安装接口pymysql包
修改项目目录下的__int__.py
手动创建一个当前项目的空的数据库,准备一个有创建数据库权限的用户
Navicat连接远程虚拟机:
Navicat创建数据库
settings配置
命令行创建数据库:
3.模型的创建与映射
模型:
django.db.models.Model就是一个类
模型定义在app文件夹下的models.py文件
激活模型:
--注册应用(模型依赖注册,必需注册)
迁移:django中对数据库的操作,对数据库结构有任何改变,都叫迁移。
--创建迁移:只是告诉django,我们修改了模型,它不会操作数据库。
python manage.py makemigrations appname 备注:app名不写,会迁移到所有的app中
如果我们想看,我们的更改,会对数据库产生什么影响,我们可以看它大概会执行什么sql语句。
python manage.py sqlmigrate teacher 0001
--执行迁移,操作数据库,将对模型的改动应用到数据库(实际上底层就是执行了sql语句)
python manage.py migrate appname 备注:app名不写,会作用到所有的app中未执行的迁移。在所有注册的app中所有的改动,全部映射到数据库。
show tables
模型映射到数据库中就是一张表,表名=appname_模型name 小写 如上图所示。
执行上面的命令,到底干了什么?
--在app中查找迁移文件,并且去django_migrations表中查找,如果有未执行的迁移文件,就去执行它。
--执行了迁移生成的sql语句
--如果成功,会在django_migrations表中增加一条记录。
模型每次改变,都需要执行:python manage.py makemigrations appname
4.简单数据的增删改查
django调试环境
python manage.py shell 备注:与普通的Python解释器无任何区别
查:
增:
需要先保存,然后在查询,如下图:save()之后,查询后才有数据。
方法二:直接创建
删:
改:s.age=16,直接赋值。
查:
查一条:
get返回的是对象,如果返回了多值就会报错。
带条件查询:
多条件查询:
改多个:
全删:
带条件的删除:
以上是关于django模型系统一的主要内容,如果未能解决你的问题,请参考以下文章