这是我参与更文挑战的第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
再建立一个juejin项目django-admin startproject juejin
再来start一个apppython juejin/manage.py startapp demo
我们修改一下INSTALLED_APPS
先跑起来再说
我们可以看到现在的项目目录如下。
在drf下还会多两个文件。分别是serializers.py和filters.py,用于做序列化和orm的数据筛选。
对于前期的项目可以都写在一个目录下。但需要留意的是,当一个文件行数超过500行时候。应该开始考虑拆分的问题,而不是继续往目录下面继续写,写的越多后面需要解耦的时间越多。
这时候分析一下现在/未来会膨胀的文件是哪个?然后拆分出来,独立建立一个文件夹。这里已views为例。
我建立了两个viewset代码,分别是文章和热讯,提前拆分做好规划。
对于service看法
在另一个技术社区讨论过这个问题。如果有兴趣的可以参考一下文末链接。
但是基于Django的开发来说,因为Django本身的设计就是MVT
Model数据 -> View视图() -> Template模板
对于一般的小项目来说是够用的,因为页面模板不会很多。但如果项目变的中型或者大型了,就有点捉襟见肘了。因为会有一堆的代码都会写入views文件里面。
对于service层(文件夹/文件)来说,是建议加入的,他可以解耦views层次的代码。
service应该是从Java传过来的,对于Django有些天然不合,但是如果继续将代码写入单文件。会使得代码变的无法维护。可以适当的结合其他语言框架的有点来糅合Django才会使其发出最强的威力。
一些建议
校验数据只在serializers中做,views层的视图只做数据输出。
数据的处理应该通过service来做,而不直接写到view中,保持view的输出接口。
app需要提前拆分,否则后期耦合性太强而不利于拆分。
在使用migrate迁移的时,应当考虑清楚字段后再做迁移。Django的数据迁移很方便,这种方便到后期字段变得多了也会变成一把双刃剑。尤其是测试服和正式服的字段不同步的时候,有可能会产生数据迁移时候,一定要小心小心再小心。
参考文章
使用 Django 搭建 APP 服务端的一系列问题
发现一个掘金的小彩蛋
是在编辑文章的控制台里面
本文转载自: 掘金