时间:2021-05-22
一、这种布局的优点
二、Django 默认产生的布局
假设项目名为 foo, 使用 python django-admin.py startproject foo 命令产生的默认布局会是:
foo/ manage.py foo/ __init__.py settings.py urls.py wsgi.py三、推荐的项目布局
假设我们的项目名为 myproject, 其中有两个应用 blog 和 users,推荐的项目布局可以为:
myproject/ manage.py myproject/ __init__.py urls.py wsgi.py settings/ __init__.py base.py dev.py prod.py blog/ __init__.py models.py managers.py views.py urls.py templates/ blog/ base.html list.html detail.html static/ css/ js/ … tests/ __init__.py test_models.py test_managers.py test_views.py users/ __init__.py models.py views.py urls.py templates/ users/ base.html list.html detail.html static/ css/ js/ … tests/ __init__.py test_models.py test_views.py static/ css/ js/ … templates/ base.html index.html requirements/ base.txt dev.txt test.txt prod.txt1. 每个应用的目录位置
最顶层的 myproject 目录包含有 manage.py 文件,因此是项目的根目录。 myproject/myproject/ 是项目的内容目录,项目的根 URL 配置文件, WSGI 配置文件都存放在这里面。
myproject/blog/ 和 myproject/users/ 是项目的两个应用所在的目录,将 blog、 users 这两个应用的目录与 myproject/myproject/ 平行放置,而不放置在 myproject/myproject/ 目录内的好处是: 之后要 import 应用中的模块时,比如 import blog 应用中的 models 时,可以用 import blog.models,而不需要用 import myproject.blog.models,这样也方便之后能将应用独立出来重用。
2. 为每个环境设置各自的配置信息
针对项目的各个环境,如本地开发 dev、 内部测试 stage、 自动化流程环境 jenkins 及生产环境 prod,分别创建独立的配置文件。
这样,这些环境配置文件就能读取默认的配置项了,之后就能在各自的配置文件中设置定制的配置值了。比如本地开发环境,可以在 dev.py 中添加 DEBUG=True**, 而生产环境 **prod.py**,可以设置 DEBUG=False`。
指定使用哪个配置文件:
可以通过操作系统的环境变量指定,比如:
export DJANGO_SETTINGS_MODELS="myproject.settings.prod"也可以通过命令行参数指定, 比如:
./manage.py migrate --settings=myproject.settings.prod或者
gunicorn -w 4 -b 127.0.0.1:8001 --settings=myproject.settings.prod3. 修改 INSTALLED_APPS
默认的 INSTALLED_APPS 会是:
INSTALLED_APPS = ( ...)可以将元组 () 改为列表 []:
INSTALLED_APPS = [ ...]进一步可以将 INSTALLED_APPS 中的第三方(内置)的应用与我们自己的应用分开,如:
PREREQ_APPS = [ ‘django.contrib.auth', ‘django.contrib.contenttypes', … ‘debug_toolbar', ‘imagekit', ‘haystack',]PROJECT_APPS = [ ‘homepage', ‘users', ‘blog',]INSTALLED_APPS = PREREQ_APPS + PROJECT_APPS这样分开后,我们就可以只针对我们自己的应用进行 test 和 code coverage。
以上针对 INSTALLED_APPS 的修改也可以针对 TEMPLATE_DIRS 和 MIDDLEMARE_CLASSES 进行。
4. 调整 pip requirements
项目一般都有一个 requirements.txt 文件,可以指定项目的依赖包,根据这个文件,可以用以下命令对依赖包进行自动安装:
pip install -r requirements.txt在 requirements.txt 文件中可以用 -r filename 来包含进另一个文件的内容,这个功能和 C 语言中的 #include <filename.h> 类似。
因此,我们可以将通用的依赖信息保存在 myproject/requirements/base.txt 文件中,而针对不同的环境,比如测试环境,保存在另一个文件中,如 myproject/requirements/test.txt, 里面的内容可能会是:
-r base.txtpytest==2.5.2coverage==3.7.15. 分割测试文件
在每个应用中分别创建一个包含测试内容的目录 tests,将对应不同类别的测试分别保存在不同的文件中,如 test_models.py、 test_views.py 等。这样分配,比起将全部测试代码放在单个文件中的好处是:代码更易阅读,同时还能减少在编辑器中上下翻滚的时间。
6. URL 配置文件
先各个应用内的 urls.py 保存各自的 URL 配置,然后在项目的根 URL 配置文件中,通过 include 命令将子应用的 URL 配置信息包含进行:
urlpatterns = patterns(‘', url(r'^$', HomePageView.as_view(), name=‘home'), url(r'^blog/‘, include(‘blog.urls')), url(r'^user/‘, include(‘users.urls')),)7. 模板和静态文件
各个子应用都应该有各自的模板和静态文件目录,如 blog 的模板和静态文件目录位置应该为: myproject/blog/templates/blog/ 和 myproject/blog/static/blog/ 。如果想对子应用中的模板和静态文件进行覆盖,可以通过在项目根模板和根静态文件目录中创建相同名字的文件进行。比如要覆盖 blog 中的 detail.html 模板,可以通过创建 myproject/templates/blog/detail.html 文件来对默认的模板文件进行覆盖。
8. 重用子应用
如果想在另一个项目中重用 blog 应用,正确的方法是:
参考文献: http://mended-django-project-layout/
到此这篇关于Django 项目布局方法(值得推荐)的文章就介绍到这了,更多相关Django 项目布局方法(值得推荐)内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
django项目遭遇cc攻击,不要惊慌,这里推荐两招简单实用的技巧。项目Nginx作为http接入层,分发到django应用,启动10个uwsgiworker。
Django的ORM是非常好用的,哪怕不是做Web项目也值得一用,所以网上也可以找到不少使用Django开发非Web项目的资料,因为除了ORM之个,命令行、配置
本文实例讲述了创建Django项目的方法。分享给大家供大家参考,具体如下:创建Django项目创建一个HelloDjango项目GitHub地址:https:/
在django项目根目录位置创建scrapy项目,django_12是django项目,ABCkg是scrapy爬虫项目,app1是django的子应用2.在S
Django流程:1创建Django项目:django-adminstartprojectprojectname2创建应用::pythonmanage.pyst