django 的学习总结

20 篇文章 0 订阅
8 篇文章 0 订阅

Django 是以 python 作为开发语言的网站模板框架,在和同类型的 Flask 进行对比时,主要的优点是部署快速,基本上的各个功能模块都已经具备,只需要对一些参数进行修改设置即可。

Django 架构

整个 Django 的架构可以分为

  1. URL解析,负责对前端的URL请求进行分析,然后分配给不同的应用,这里的应用就是一个application,更具体就是专门处理某项功能的一个模块,例如专门处理 Email 的应用等。
  2. View处理,在收到网络请求之后,针对不同的请求,采用不同的函数/方程,对请求进行处理,这里的处理有两个分类,一个是偏计算类的处理,一个是偏数据类的处理,如果是偏数据类的处理的话,还有有跟底层数据库之间的互动和数据获取/处理等操作
  3. 数据库操作,Django 可以适配的数据库有很多,默认自带的是SQLite,但是一般来说,更多人使用 Mysql 或者 Postgresql 数据库

一、数据库操作

在数据库操作的过程中,一类是数据的聚合,即 SQL 中的 Group By 操作。

Django 中和数据库的交互有自己的一套语法

聚合

聚合中的操作,有以下几个:

  • annotate: 相当于 SQL 中的 Partition By
  • values:相当于 SQL 中的 select
  • aggregate: 相当于 SQL 中的 Sum/ Count 等聚合操作

如果要对应SQL中的Group By 则要 values() 和 annotate 结合使用

举个例子

SQL 中 的

select A,

sum(B) as sum_B 

from T1 

group by A 

使用 Django 实现的话则为

T1.values(A).annotate(sum_B = Sum(B))

所以这里的 values(A) 相当于 group by A, annotate 变成了 aggragate 的功能,这里使用的 Sum 操作的功能

 

二、manage.py 操作

migrate 

在 django 的官方文档中,对 migrate 的解释是

Synchronizes the database state with the current set of models and migrations. Migrations, their relationship with apps and more are covered in depth in the migrations documentation.

这个操作主要是对模型的一些改变和模型之间的关系的一些更新进行和数据库同步

但是,在实际的使用过程中,也发现了 migrate 的一些问题,例如我删除了一个模型数据表,但是之后又对这个模型的字段进行了一些修改,然后发现在真实的数据库中,并没有出现这个模型。

这个时候,我们需要告诉 migrate 明确需要做什么,即下面的指令

migrate --run-syncdb

这个是明确告诉 migrate 不需要经过 makemigrations,直接进行模型和数据库的同步

Django 的文档中的解释是这样的

Allows creating tables for apps without migrations. While this isn’t recommended, the migrations framework is sometimes too slow on large projects with hundreds of models.

这里 Django 官方文档中对这个命令的顾虑是在我们的模型很多的时候,可能处理速度会很慢

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值