Django-rest-framework 开发的一些建议

1,427 阅读3分钟

这是我参与更文挑战的第3天,活动详情查看: 更文挑战

Django是Python的一个Web框架。对于创业公司来说相当的短平快。随着业务的增长,新增的代码也会越来越多。如果一开始没有很好的对项目目录做一个规划的话,后面就基本是重写而不叫重构了。

虽然Python3.5开始有了type hit,其实有点鸡肋,那个只能是叫做变量类型注释,而不会对运行时有任何的影响。但是还是推荐配合pyright使用 由于djangorestframework框架由于名字太长,下面都简称为drf

来,我们先开始一个Django项目

我们先基于Django2.2.10版本建立一个掘金的项目和demo的app。

pip install django==2.2.10

pip install djangorestframework

image.png

再建立一个juejin项目 django-admin startproject juejin

image.png

再来start一个app python juejin/manage.py startapp demo

image.png

我们修改一下INSTALLED_APPS

image.png

先跑起来再说

image.png

我们可以看到现在的项目目录如下。 image.png

在drf下还会多两个文件。分别是serializers.py和filters.py,用于做序列化和orm的数据筛选。

image.png

对于前期的项目可以都写在一个目录下。但需要留意的是,当一个文件行数超过500行时候。应该开始考虑拆分的问题,而不是继续往目录下面继续写,写的越多后面需要解耦的时间越多。

这时候分析一下现在/未来会膨胀的文件是哪个?然后拆分出来,独立建立一个文件夹。这里已views为例。 我建立了两个viewset代码,分别是文章和热讯,提前拆分做好规划。

image.png

image.png

对于service看法

在另一个技术社区讨论过这个问题。如果有兴趣的可以参考一下文末链接。

但是基于Django的开发来说,因为Django本身的设计就是MVT

Model数据 -> View视图() -> Template模板

对于一般的小项目来说是够用的,因为页面模板不会很多。但如果项目变的中型或者大型了,就有点捉襟见肘了。因为会有一堆的代码都会写入views文件里面。

对于service层(文件夹/文件)来说,是建议加入的,他可以解耦views层次的代码。

service应该是从Java传过来的,对于Django有些天然不合,但是如果继续将代码写入单文件。会使得代码变的无法维护。可以适当的结合其他语言框架的有点来糅合Django才会使其发出最强的威力。

一些建议

校验数据只在serializers中做,views层的视图只做数据输出。

数据的处理应该通过service来做,而不直接写到view中,保持view的输出接口。

app需要提前拆分,否则后期耦合性太强而不利于拆分。

在使用migrate迁移的时,应当考虑清楚字段后再做迁移。Django的数据迁移很方便,这种方便到后期字段变得多了也会变成一把双刃剑。尤其是测试服和正式服的字段不同步的时候,有可能会产生数据迁移时候,一定要小心小心再小心。

参考文章 使用 Django 搭建 APP 服务端的一系列问题

发现一个掘金的小彩蛋

是在编辑文章的控制台里面 image.png