【Django】基于Django架构网站代码的目录结构---转载
经典的Django项目源码目录结构
Django在一个项目的目录结构划分方面缺乏必要的规范。在Django的官方文档中并没有给出大型项目的代码建议目录结构,网上的文章也是根据项目的不同结构也有适当的变化。
样式一 :强调模块化设计 参见参考文章二
··管理项目的依赖文件requirements文件夹,列出项目中需要的依赖的文件,比如项目使用的所有python包。
··分离应用文件和库文件(apps ,libs)新建apps和libs用来保存application和library
··创建完善的setting模块
优势:模块化设计适合规模较大的项目
缺点:这种布局结构没有说明static文件的放置路径。
$ tree . . ├── djangolicious │ ├── apps │ │ ├── blog │ │ │ ├── __init__.py │ │ │ ├── models.py │ │ │ ├── tests.py │ │ │ └── views.py │ │ ├── __init__.py │ │ ├── news │ │ │ ├── __init__.py │ │ │ ├── models.py │ │ │ ├── tests.py │ │ │ └── views.py │ │ └── reader │ │ ├── __init__.py │ │ ├── models.py │ │ ├── tests.py │ │ └── views.py │ ├── __init__.py │ ├── libs │ │ ├── display │ │ │ ├── __init__.py │ │ │ ├── models.py │ │ │ ├── tests.py │ │ │ └── views.py │ │ ├── __init__.py │ │ └── management │ │ ├── __init__.py │ │ ├── models.py │ │ ├── tests.py │ │ └── views.py │ ├── settings │ │ ├── common.py │ │ ├── dev.py │ │ ├── __init__.py │ │ ├── prod.py │ │ └── test.py │ ├── urls.py │ └── wsgi.py ├── manage.py ├── requirements │ ├── common.txt │ ├── dev.txt │ ├── prod.txt │ └── test.txt └── requirements.txt10 directories, 36 files
样式二,大型开源Django框架项目的 参见参考文章5
此模板是开源项目常用的结构,适合大型Django项目开发。
Project的目录结构,PROJ_NAME指的是项目名
PROJ_NAME/__init__.py 这几个文件是django创建project所必须的,不做过多说明manage.pysettings.pyurls.py apps/ 即使是“小”工程,也建议分成多个app,每个app足够简单,只解决某一个方面的问题 (注1)myapp1/myapp2/extra_apps/ 引用的其他app。libs/ 加载第三方模块,可以避免版本冲突,按照标准的site-packages管理(注2)python*.*/ 指定python版本号site-packages/ requirements.pip #pip的依赖说明文件tests/ project级别的测试,对于每个app,还要有自己的测试代码static/ 静态内容css/js/images/uploads/ 上传文件所在目录templates/ 模板目录,覆盖app的模板flatpages/comments/example/app1/app2/templatetags/ tag目录
注1:指定app加载,在settings.py中设置:
sys.path.insert(0, os.path.join(PROJECT_ROOT, 'apps'))sys.path.insert(0, os.path.join(PROJECT_ROOT, 'extras'))sys.path.insert(0, os.path.join(PROJECT_ROOT, 'libs'))
注2:自定义libs的加载,在settings.py中设置:
sys.path.insert(0, '/{{MY_LIB)}/site-packages/*****.egg')sys.path.insert(0, '/{{MY_LIB}} /site-packages/')
其中 app目录结构
$APP_NAME/tests/ app级别的测试代码models/ 注1__init__.pyAmodels.pyBmodels.pytemplates/ 注2templatetags/ tag目录
注1:如果很好的控制app的规模,Model类数量少,可以使用惯用的models.py文件中, 否则将models做成一个package
接下来可以有两种做法:
1. 在__init__.py中import所有的Model类
2. 指定Model的元类(Meta)的app_label, 参考这里
注2:如果extend 工程下的base.html, 使用 !base.html
我的总结
···样式一中强调的“Think Modular”思想十分适合大型的项目,大部分大型的项目也是遵循模块化目录结构的原则的。
如下图所示:
-project---app1--templates--staticsviewsmodelstestsurls---app2---appnstatics--css--jssettings
···我在开源项目上看到的小型Project的目录结构差异较大,没有清晰的体系结构,规律不是很明显。
参考文章
1 Large Django application layout
2 重要Django project structure 基于Django 1.4 project
3 Project design / FS layout for large django projects [closed]
4 Django官网提供的大型开源项目
5 重要 Django最佳实践:项目布局 | python开源项目目录结构
6 AN UPDATED GENERAL DJANGO PROJECT (>= 1.5) STRUCTURE OR FOLDER LAYOUT
7 Google小组上关于目录结构的讨论
转载于:https://www.cnblogs.com/winstonsias/p/11544179.html
【Django】基于Django架构网站代码的目录结构---转载相关推荐
- 【Django】基于Django架构网站代码的目录结构
经典的Django项目源码目录结构 Django在一个项目的目录结构划分方面缺乏必要的规范.在Django的官方文档中并没有给出大型项目的代码建议目录结构,网上的文章也是根据项目的不同结构也有适当的 ...
- linux与安卓系统目录,android系统架构及源码目录结构
1. android系统架构: android系统架构采用了分层架构的思想,如下图所示,从上到下共4层,分别为:应用程序层.应用程序框架层.系统库和android运行时层.linux内核层. 每层功能 ...
- android系统架构及源码目录结构
本文转载自[踏雪行]的博客(http://blog.csdn.net/finewind/article/details/46324507) 1. Android系统架构: android系统架构采用了 ...
- 《帝国网站管理系统》目录结构介绍
/ 系统根目录 ├d/ 附件和数据存放目录 (data) │├file/ 附件存放目录 │├js/ JS调用生成目录 ...
- PHP的目录结构、设计理念以及核心架构
前一节:使用ext_skel,实现一个PHP扩展,试着使用 ext_skel 写了一个扩展,通过上一节可以大体了解自己如何写一个扩展.这一节主要介绍一下PHP的目录结构.设计理念以及核心架构. PHP ...
- VUE3(四)目录结构
更好的了解项目的目录结构,能更好的去开发项目: 当前展示的目录结构是基于vite搭建的项目. 目录结构如下图所示: 我的代码是托管在我自己的git服务器上边的,默认安装的时候是不存在的. 1:dist ...
- Android 10 根文件系统和编译系统(四):Android源码目录结构
配套系列教学视频链接: Android 10.0 AOSP源码编译: https://www.100ask.net/detail/p_60a1e037e4b0adb2d864c6d8/6 Androi ...
- PHP程序构造,PHP程序员在做网站开发前对基本目录结构如何规划?
之前分享了一些有技术积累的经验,今天想分享一点自己对PHP网站开发前目录结构的架构的一点心得. 我自己写的李雷博客,就是按照这种思路来做的,主要分为以下几个部分: 1.config目录 这里主要放一些 ...
- React脚手架搭建及目录结构介绍
react脚手架(create-react-app)搭建 npm install -g create-react-app create-react-app todolist (文件夹名) npm st ...
最新文章
- 让我来教你 PHP 函数调用
- Dataset:数据集集合(综合性)——机器学习、深度学习算法中常用数据集大集合(建议收藏,持续更新)
- Error while adding the mapper ‘interface *****类‘ to configuration报错原因
- deepin 15.11 docker 安装命令
- button标签设置隐藏和显示_离职后我隐藏一张工作表,老板找了一天没找到
- java char字符转编码_一、java基础-数据类型_数据类型转化_字符编码_转义字符
- 计算机基本概念及简单的二进制运算
- Spring Boot官宣:正式弃用 Java 8
- 浅谈C语言static关键字 静态变量 函数
- vmware-linux虚拟机上网配置
- Windows平台上实现P2P服务(一)
- Sass学习笔记 -- 混合器
- 内网通免广告/积分码
- 从零开始配置 vim(4)——键盘映射的一些技巧
- 闪信霸屏短信USSD是什么?
- android 公式编辑器,公式编辑器
- 整理:不用ACE你不知道ACE有多烂,给饱受ACE折磨的弟兄们散分了。
- 爆火书单视频怎么制作?实用制作教程来了
- mysql的密码破解
- 离子液体N-丙基-吡啶二氰胺盐[C3py][DCA]|N-丙基-吡啶二氰胺[C3py][DCA]|齐岳
热门文章
- linux shell 数组对比,bash shell之数组使用(牛逼篇)
- 基于Delta lake、Hudi格式的湖仓一体方案
- 阿里妈妈基于TensorFlow做了哪些深度优化?TensorFlowRS架构解析
- 《CODM》的成功源自何处?TGA年度移动游戏的总结和思考
- pyecharts第十节、地图(二、中国地图)
- 【蓝桥杯Java_C组·从零开始卷】第三节、while循环do while循环for循环(超重点)break终止循环continue结束本次循环
- Azure人工智能认知服务(AI·机器学习)
- SDN第二章 win10远程桌面Ubuntu
- [转帖]Linux修改时区
- asp.net Mvc 使用NPOI导出Excel文件