Django & Docker项目结构实践 2

在上一篇博文中,描述了一些django项目结构的实践,但实际上还有很多改进的地方,正好和最近的一个项目可以自由发挥,就套用了原本的脚手架项目,并做了一些改进,另外也结合了docker。


首先是总体的项目

|
|-deployment_yml
|-deployment_server
|-deployment_dockerfile
|-project1
|-project2



项目会分为四个部分,第一个部分是yml,也就使用到了docker-compose进行部署,这样做可以减少部署成本,因为yml将相关的container都声明了,部署时只需要一句启动命令即可,启动一个container和两个container的耗时是一样的(当然,这里要有依赖关系,具有依赖关系的container放在一起当然是最好,虽然你可以将所有的container声明都放在一起)。

第二部分是一个服务器文件,如apache/uwsgi的配置都可以以文件的形式保存,在dockerfile里面现场写一份应该并不是明智的选择,所以将这些配置文件都拿出来,再使用git或者mount传递到container内。

第三部分是dockerfile,这个不用多说。

第四部分是项目源码了。


之所以这分配是因为考虑到之后项目可能不使用docker进行部署,当然也有可能更换一个应用服务器,所以将源码、docker、还有服务器配置分开,尽量保持三者的独立性。


再来到项目中(当然说的是django项目)

材料:

django -> wsgi application

webpack -> static bunlder

django restframework -> rest api

mongoengine -> mongo ORM

Vue.js -> MVVM / component / front-end module

bootstrap & vue-strap -> 前端响应式

实际上所有的目标都在于模块化我们的代码,django拥有强大的后台能力,可以让我们的代码更灵活,也提供了足够强大的功能支持。

webpack则是前端的模块化,vue.js所提供了 .vue 单文件化组件功能也必须使用webpack。

mongoengine可以和django进行集成,并且本身的ORM api与django自带的关系型数据库ORM相似

vue-strap和bootstrap帮助我们快速构建响应式的前端页面



|-_config
	|-requirement.pip
	|-webpack.config.json
	|-package.json
|-[project]
	|-env.py
	|-settings.py
	|-urls.py
	|-wsgi.py
|-modules
	|-app1
	|-app2
|-static
	|-bundles
	|-common
|-core
	|-decorator
	|-middware
	|-model
	|-tool



在项目中,大致会分为配置、模块、静态文件(公用)、核心

配置会有requirement.pip 用来记录项目所需的python lib (for pip)

package.json则用来记录项目所需的第三方js库(for npm,大多数第三方js都可以通过npm进行获取,另外也用到webpack)

webpack.config.json-》webpack的配置文件


核心的部分有两块,一块是django的默认项目配置文件如settings / urls / wsgi等

另一块则是项目所需的公用python代码,如修饰器,中间件,模型,工具等等


静态文件有另两部分,一是webpack打包的目标文件夹,一是公用的js或css,例如bootstrap.css则没有必要以webpack的形式打包,或一些难以打包的静态文件,还有一些图片等


模块则是我们的核心代码,因为webpack的关系,我们的前端文件也拥有了模块化的能力,所以可以很好的和我们的后台代码按模块放置在一起。

|-modules
	|-base
		|-app
			|-base.html
			|-base.js
			|-base.css
	|-app1
		|-api
			|-service
				|-domain1.py
			|-domain1.py
			|-domain2.py
		|-app
			|-page1
				|-component
				|-page1.css
				|-page1.js
				|-page1.html
		|-view
			|-view.py


这样我们就可以将每个模块的前后端代码放置在一起,又将整个页面分为 api / app / view三层,view负责页面跳转,api负责ajax,app则是webpack下的js代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值