Django ORM框架

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django ORM框架相关的知识,希望对你有一定的参考价值。

1.介绍

ORM:object对象-类,mapping映射,relations关系,关系数据库中的表

技术分享图片

2.模型类的设计和表的生成

在models.py设计和表对应的类,模型类,每一个类要继承model.Model

安装小数据库:
sudo apt-get install sqliteman

(1)模型类生成表
生成迁移文件
命令:python manage.py makemigrations
技术分享图片
迁移文件是根据模型类生成的。

执行迁移文件表
命令:
python manage.py migrate

根据迁移文件生成表。
生成表名的默认格式:应用名_模型类名小写

3.通过模型类操作数据表

进入项目shell的命令
python manage.py shell

以下为在相互shell终端中演示:

(1)导入模型类
from booktest.models import BookInfo

(2)向booktest_bookinfo表中插入一条数据。

b = BookInfo() #定义一个BookInfo类的对象
b.btitle = ‘天龙八部‘ #定义b对象的属性并赋值
b.bpub_date = date(1999,2,23)

技术分享图片

(3)表的读取和删除

技术分享图片

(4)建立外键,一对多关系,外键是一

技术分享图片
技术分享图片

技术分享图片

(5)外键关联

例如:
b2 = BookInfo.objects.get(id=2)

h.hbook = b2 #给关系属性赋值,英雄对象所属的图书对象

h.save()

(6) 查询图书表里面的所有内容

BookInfo.objects.all()

4.后台管理

(1)本地化
语言和时区的本地化
修改settings.py文件

技术分享图片

(2)创建管理员

命令:python manage.py createsuperuser

技术分享图片

技术分享图片

(3)注册模型类

在应用下的admin.py中注册模型类

告诉django框架根据注册的模型类来生成对应表管理页面。

技术分享图片技术分享图片

在models.py修改返回字符串调整页面显示

技术分享图片

(4)自定义管理页面
自定义管理类,模型管理类就是告诉django在生成的管理页面上显示哪些内容
进一步调整管理页面,在admin里自定义一个模型管理类

技术分享图片

5.视图函数的使用

(1)定义视图函数

视图函数定义在views.py中

例如:

技术分享图片

视图函数必须有一个参数request,进行处理之后,需要返回一个HttpResponse的类对象

(2)进行url配置

技术分享图片

url配置的目的使让建立url和视图函数的对应关系,url配置项定义在urlpatterns的列表中,每一个配置项都调用url函数

url函数有两个参数,第一个参数是一个正则表达式,第二个是对应的处理动作

配置url时,有两种语法格式:
(a)url(正则表达式,视图函数名)
(b)url(正则表达式,include(应用中的urls文件))

工作中在配置url时,首先在项目的urls.py文件中添加配置项时,并不写具体的url和视图函数之间的对应关系,而是包含具体应用的urls.py文件,在应用的urls.py文件中写url和视图函数的对应关系。

例如:第一步 在项目urls.py中包含应用urls.py

技术分享图片

第二步:在应用urls.py写url与函数的对应关系

技术分享图片

(3)匹配过程:先在项目urls.py中匹配到哪个应用,然后再应用urls.py 中匹配显示哪个函数

技术分享图片

当用户输入如http://127.0.0.1:8000/aindex时
去除域名和最前面的/,剩下aindex,拿aindex字符串到项目的urls文件中进行匹配,配置成功之后,去除匹配的a字符,那剩下的index字符串继续到项目的urls文件中进行正则匹配,匹配成功之后执行视图函数index,index视图函数返回内容hello python 给浏览器来显示

6.模板使用

注意:模板不仅仅是一个html文件

(1)创建模板文件夹

技术分享图片

(2)配置模板目录

在项目settings.py的TEMPLATES

(a)使用项目目录的绝对路径:

技术分享图片

(b)将项目目录绝对路径与新建文件夹关联

技术分享图片

(3)使用模板文件

(a)加载模板文件
去模板目录下面获取html文件的内容,得到一个模板对象

(b)定义模板上下文
向模板文件传递数据

(c)模板渲染
得到一个标准的html内容

技术分享图片

实际开发中不用写render函数,导入模块调用即可,如下:

技术分享图片

(4)给模板文件传递数据

模板变量使用:{{ 模板变量 }}

模板代码段:{% 代码段 %}

技术分享图片

以上是关于Django ORM框架的主要内容,如果未能解决你的问题,请参考以下文章

Django之自带ORM框架

Django框架之数据库ORM框架

python-django框架-orm相关继续&ORM的增删改查操作_20191110

Django框架—— orm增删改查Django生命周期

python3开发进阶-Django框架的起飞加速一(ORM)

Django进阶-ORM框架