经典的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架构网站代码的目录结构---转载相关推荐

  1. 【Django】基于Django架构网站代码的目录结构

     经典的Django项目源码目录结构 Django在一个项目的目录结构划分方面缺乏必要的规范.在Django的官方文档中并没有给出大型项目的代码建议目录结构,网上的文章也是根据项目的不同结构也有适当的 ...

  2. linux与安卓系统目录,android系统架构及源码目录结构

    1. android系统架构: android系统架构采用了分层架构的思想,如下图所示,从上到下共4层,分别为:应用程序层.应用程序框架层.系统库和android运行时层.linux内核层. 每层功能 ...

  3. android系统架构及源码目录结构

    本文转载自[踏雪行]的博客(http://blog.csdn.net/finewind/article/details/46324507) 1. Android系统架构: android系统架构采用了 ...

  4. 《帝国网站管理系统》目录结构介绍

    / 系统根目录     ├d/            附件和数据存放目录 (data)     │├file/       附件存放目录     │├js/         JS调用生成目录     ...

  5. PHP的目录结构、设计理念以及核心架构

    前一节:使用ext_skel,实现一个PHP扩展,试着使用 ext_skel 写了一个扩展,通过上一节可以大体了解自己如何写一个扩展.这一节主要介绍一下PHP的目录结构.设计理念以及核心架构. PHP ...

  6. VUE3(四)目录结构

    更好的了解项目的目录结构,能更好的去开发项目: 当前展示的目录结构是基于vite搭建的项目. 目录结构如下图所示: 我的代码是托管在我自己的git服务器上边的,默认安装的时候是不存在的. 1:dist ...

  7. Android 10 根文件系统和编译系统(四):Android源码目录结构

    配套系列教学视频链接: Android 10.0 AOSP源码编译: https://www.100ask.net/detail/p_60a1e037e4b0adb2d864c6d8/6 Androi ...

  8. PHP程序构造,PHP程序员在做网站开发前对基本目录结构如何规划?

    之前分享了一些有技术积累的经验,今天想分享一点自己对PHP网站开发前目录结构的架构的一点心得. 我自己写的李雷博客,就是按照这种思路来做的,主要分为以下几个部分: 1.config目录 这里主要放一些 ...

  9. React脚手架搭建及目录结构介绍

    react脚手架(create-react-app)搭建 npm install -g create-react-app create-react-app todolist (文件夹名) npm st ...

最新文章

  1. 让我来教你 PHP 函数调用
  2. Dataset:数据集集合(综合性)——机器学习、深度学习算法中常用数据集大集合(建议收藏,持续更新)
  3. Error while adding the mapper ‘interface *****类‘ to configuration报错原因
  4. deepin 15.11 docker 安装命令
  5. button标签设置隐藏和显示_离职后我隐藏一张工作表,老板找了一天没找到
  6. java char字符转编码_一、java基础-数据类型_数据类型转化_字符编码_转义字符
  7. 计算机基本概念及简单的二进制运算
  8. Spring Boot官宣:正式弃用 Java 8
  9. 浅谈C语言static关键字 静态变量 函数
  10. vmware-linux虚拟机上网配置
  11. Windows平台上实现P2P服务(一)
  12. Sass学习笔记 -- 混合器
  13. 内网通免广告/积分码
  14. 从零开始配置 vim(4)——键盘映射的一些技巧
  15. 闪信霸屏短信USSD是什么?
  16. android 公式编辑器,公式编辑器
  17. 整理:不用ACE你不知道ACE有多烂,给饱受ACE折磨的弟兄们散分了。
  18. 爆火书单视频怎么制作?实用制作教程来了
  19. mysql的密码破解
  20. 离子液体N-丙基-吡啶二氰胺盐[C3py][DCA]|N-丙基-吡啶二氰胺[C3py][DCA]|齐岳

热门文章

  1. linux shell 数组对比,bash shell之数组使用(牛逼篇)
  2. 基于Delta lake、Hudi格式的湖仓一体方案
  3. 阿里妈妈基于TensorFlow做了哪些深度优化?TensorFlowRS架构解析
  4. 《CODM》的成功源自何处?TGA年度移动游戏的总结和思考
  5. pyecharts第十节、地图(二、中国地图)
  6. 【蓝桥杯Java_C组·从零开始卷】第三节、while循环do while循环for循环(超重点)break终止循环continue结束本次循环
  7. Azure人工智能认知服务(AI·机器学习)
  8. SDN第二章 win10远程桌面Ubuntu
  9. [转帖]Linux修改时区
  10. asp.net Mvc 使用NPOI导出Excel文件