Django REST framework 完结

2,606 阅读4分钟

写在前面

关于 DRF 的文章写了也有一段时间了,功能上也都有涉及到。今天就对这些天写的文章做一个总结,总结技术的同时也总结一下工作。

项目目录

项目目录按照入门顺序已排序,希望这十篇文章,每一篇都能带给你灵感与帮助。

实战分享

代码仓库详情见: Github

1. 关于技术选型

关于 Python 的 Web 框架有许多,比较流行的框架有 Django、Flask、Tornado,随着 python社区日益壮大发展,近两年也涌现出很多优秀的 web 框架,具体可以参考我 Python异步框架

Django 的优势我在入门的文章中有提到,Django 有着丰富的周边生态以及较为全面的文档支持。这一点优势其实 Flask 也有,不过 Flask 相对于 Django 来说各有千秋。总结来说就是 Django 大而全,定制化的能力较弱,功能只需要按照官方文档配置;Flask 小而精,有着丰富的第三方插件支持,第三方功能需要自行安装配置。

这里选择 Django 的原因就是因为,懒。没有太多的时间做过多的配置,本着拿来主义的原则。上手就是一通开发、测试、迭代,就上线了。一天一个小版本,一周一个迭代,一个月一次重构。

2. 关于数据库

Django 支持多种关系型数据库 PostgreSQL、SQLite、MySQL、Oracl等。一般建议自己学习就 SQLite,不需要在数据库上花太多的时间。其他情况根据公司技术做选择就行。

这里需要注意的是默认的 migrate 命令,只能在开发环境使用。生产环境应该使用 SQL 操作数据库,一来避免不可预见的风险,二来更符合开发规范。

默认的 migrate 命令,只能在开发环境使用。

默认的 migrate 命令,只能在开发环境使用。

默认的 migrate 命令,只能在开发环境使用。

3. 关于 Django Admin

建议一定要使用 Admin 的页面,因为它的使用会大大减少线上上线之后 SQL 提交的次数。对开放人员极其友好,但是超级管理员的权限只能赋予少部分人员(这玩意太强大)。

建议可以定制一些命令行工具,比如一些在开发环境用到的脚本,初始化数据库、导出数据的脚本、数据库差异等工具,这样可以使你的开发效率成倍提升

4. 关于代码仓库

关于整个 DRF 专栏的项目代码已经整理好放在我的 Github 。欢迎有需要的小伙伴 STAR & FORK。 当然如果有哪里写的不好写的不正确的,也欢迎小伙伴指证,我会及时修正。

5. 关于 DRF 其他内容

这里关于 DRF 的知识点,以及作为一个开框架来说,基本上是够用的。有关于 ViewSet Serializer Filter 的功能因为会根据具体业务有着不同的使用方式,所以这里并没有深入讲解,需要有需求的小伙伴,在使用的时候结合 官方文档使用。

当然如果你有好的功能点想让我继续更新,也欢迎沟通交流。

6. 其他你可能会用到的技术

  • Celery Python开发的分布式任务调度模块。

    工作场景有定时任务、异步任务调度等。在 Django 中可以直接使用 django-celery ,它为我们封装了所有关于 Celery 的基本功能与操作。

  • Redis 基于内存实现的高性能非关系型数据库。

    一般有以下的业务场景:

    • 缓存 对热数据进行缓存,减轻数据压力
    • 队列 配合 Celery 实现消息的消费监控等功能
    • 分布式锁 基于 SETNX 命令的原子性操作实现解决资源竞争的问题

Redis 是完全开源免费的,遵守 BSD 协议,是一个灵活的高性能 key-value 数据结构存储,可以用来作为数据库、缓存和消息队列。

项目推荐

推荐几款热门开源的 Django 项目,供大家学习研究