Django MTV模型
目录
MVC模式
MVC模式
MVC模式(Model–view–controller)
模型(Model)、视图(View)和控制器(Controller)
Django遵循MVC架构
M : 数据存取、处理模块,通过django orm实现。 (models.py)
V : 对数据进行查询、逻辑处理,通过template展示。(views.py | templates\my_temp.html)
C : 根据用户输入委派视图的部分,由 Django 框架根据 URLconf 设置,对给定 URL 调用适 当的 Python 函数。(urls.py)
Model模型
什么是Model
Basics:
每一个Model代表了数据库中的一张表
每一个Model都是django.db.models.Model的子类
Model的每个属性代表了数据库表的每个字段
字段类型
Django提供的常见的字段类型有:
- IntegerField 整数类型字段
- CharField 字符类型字段
- DateTimeField 时间类型字段
其他:BooleanField、DateField、TextField
- OneToOneField :一对一的关系,Django数据模型关系之OneToOneField(一对一关系)
- ForeignKey:多对一的关系,Django外键(ForeignKey)操作以及related_name的作用
- ManyToManyField :多对多的关系,Django的ManyToManyField(多对多)的使用以及through的作用
More info: https://docs.djangoproject.com/en/2.2/ref/models/fields/#field-types
自定义
字段选项配置
null:
blank :
choices:
default: 默认值
primary_key: 是否为主键
unique: 是否值唯一
字段取名限制
字段取名时的一些限制(Field name restrictions)
字段名不能是Python保留的关键字
class Example(models.Model): pass = models.IntegerField() # 'pass' is a reserved word!
字段名不能包含双下划线
Model的元信息(Meta Options)
可以通过在Model的内部定义class Meta来提供Model的一些元信息 比如下面的例子:
ORM与数据库访问
ORM是Django用来进行数据库访问的接口
新增数据
Group.objects.create(name="group1", leader="wang") Group(name="group2", leader="li").save()
Business.objects.create(name="biz1", creator="page", members=8, group=Group.objects.get(id=1))
更新数据
Group.objects.filter(name="group1").update(leader="chen")
删除数据
Group.objects.filter(name="group2").delete()
简单查询
get
Group.objects.get(name="group1", leader="chen")
返回Model对象实例
不存在或存在多项满足查询条件的数据,都会报错
filter
Group.objects.filter(name="group1", leader="chen")
返回QuerySet对象
all
Group.objects.all()
返回QuerySet对象
QuerySet对象可以继续调用filter方法
Group.objects.filter(name="group1").filter(leader="chen")
复杂查询
在查询字段加上双下划线和关键字可以完成复杂查询,如:
contains 包含:Group.objects.filter(name contains="group") startswith、 endswith 以…开头、结尾 gt、 lt 大于、小于 range 两者之间 fkey field 外键查询
Business.objects.filter(group name endswith="1")
Admin管理后台
创建管理员角色
登录,需先创建管理员角色
python manage.py createsuperuser
Username (leave blank to use 'root'): admin Email address: admin@test.com Password: Password (again): Superuser created successfully.
注册model
在admin.py文件中将自己的model注册到admin下,Django就会把这个展示到管理页面
from django.contrib import admin # Register your models here. from awardapp import models admin.site.register(models.Organization) admin.site.register(models.Member) admin.site.register(models.Award) admin.site.register(models.Application)
页面的后台渲染
变量引用 {{ var }}
简单循环逻辑代码:
{% if … %} … {% endif %}
{% for … %}…{% endfor %}