Django博客项目架构规划与多应用拆分方案咨询
Django博客项目结构规划答疑
你的现有结构评估
你设想的结构属于过度拆分,存在两个明显问题:
- 把关联性极强的post、分类、标签、评论拆成多个独立应用,后续开发会需要频繁跨应用导入模型、处理外键关联,反而拉高维护成本
- 专门设置无模型的frontend、administrator应用完全没有必要,Django应用的核心是封装可复用的业务逻辑,空应用除了多了两层目录没有任何实际价值
具体问题解答
1. 博客相关功能要不要拆分多个应用?要不要单独设frontend应用?
Django应用拆分的核心原则是可复用性,post、评论、分类、标签、元描述都是博客业务的强关联模块,完全可以放在单个blog应用里,不需要拆分。
不需要单独设置frontend应用来统一存视图和路由,你可以直接在blog应用内把视图、路由拆分成frontend和admin两个子目录,按模块分类就足够清晰。
2. 用户增删文章的管理操作要放哪里?
如果用Django自带的admin后台,直接在blog应用的admin.py里注册对应模型就可以实现所有管理操作,不需要额外写代码。
如果要做自定义的用户后台,要么把管理逻辑放在对应功能的视图里做权限区分,要么单独做一个dashboard应用放所有管理逻辑,不用分散到各个功能应用里。
3. 前后台要不要拆成不同项目?
博客这类中小型项目完全不需要拆成两个项目,放在同一个项目下做路由区分就足够,拆成不同项目反而要额外处理跨域、鉴权、数据同步的问题,只会增加开发成本。如果后续你要做前后端完全分离的多端项目,再考虑拆分也不迟。
推荐的中小型博客项目结构
my_blog/ ├── my_blog/ # 项目全局配置目录 │ ├── __init__.py │ ├── settings.py │ ├── urls.py # 总路由,负责分发前台、后台路由 │ └── wsgi.py ├── blog/ # 核心博客应用,所有博客相关逻辑都聚合在这里 │ ├── __init__.py │ ├── models/ # 模型按类型拆分文件,不用全部堆在models.py │ │ ├── __init__.py │ │ ├── post.py │ │ ├── comment.py │ │ ├── category.py │ │ └── tag.py │ ├── views/ # 视图按前后台拆分 │ │ ├── __init__.py │ │ ├── frontend/ # 前台公开页面对应视图 │ │ └── admin/ # 后台管理操作对应视图 │ ├── urls/ # 路由按前后台拆分 │ │ ├── __init__.py │ │ ├── frontend.py # 对应前台路由,比如/post/xxx │ │ └── admin.py # 对应后台路由,比如/admin/add-post │ ├── admin.py # Django自带后台的模型注册配置 │ ├── forms.py │ └── templatetags/ ├── templates/ # 模板统一放在根目录,按前后台分文件夹 │ ├── frontend/ │ └── admin/ ├── static/ ├── manage.py └── db.sqlite3
这个结构既保证了业务逻辑的内聚性,又通过子目录拆分保证了代码的清晰性,对于博客项目完全够用。如果后续要拓展和博客无关的功能(比如用户中心、积分系统),再新增独立应用即可。
内容的提问来源于stack exchange,提问作者Heriyansyah Mirsuma
相关产品推荐
相关产品推荐

