首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何合理地布局Django项目文件夹与文件-Django入门必读

一个Django项目(Project)通常包含多个应用(App)。项目里除了有Python的.py文件, 设置文件setting.py,还有html模板(base.html和page.html),静态文件 (static files如CSS和js)及媒体文件(media)。当我们有这么多文件和文件夹时,我们整个项目的文件夹和文件应该怎么布局才清晰合理?小编我就带你来看一看如何合理地布局Django项目文件夹与文件。如果你喜欢本文,欢迎关注我们的微信公众号【Python与Django大咖之路】。本文参考了Frank Wiles所写的Recommended Django Project Layout。

推荐的Django项目文件夹与文件布局

假设我们有个叫myproject的Django项目,里面包含了2个Web应用(app), 一个是blog, 一个是user, 那么整个项目推荐性的文件夹与文件布局应该是这样子的。

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/ … 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/ … 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.txt

这么做最大的好处能提高每个app的重用性。比如我们把每个app的template和static静态文件夹都放在每个app的名字下面。这样每个app就可以独立运行。对属于全站的templates和static文件(比如主页),我们都放在app文件夹外。另外我们建立了一个myproject下建立了requirements文件夹,方便用户和读者了解该项目对第三方package的依赖。

推荐性的URL设置

对于整个项目的URL文件myproject/urls.py,我们不建议按下面方式写:

urlpatterns = [

url(r’^$’,HomePageView.as_view(),name=‘home’),

url(r’^blog/$’,BlogList.as_view(),name=‘blog_list’),

url(r’^blog/(?P

\d+)/$’,BlogDetail.as_view(),name=‘blog_detail’),

url(r’^user/list/$’,UserList.as_view(),name=‘user_list’),

url(r’^user/(?P\w+)/$’,UserDetail.as_view(),name=‘user_detail’),

]

我们建议这样写。总的URL里, 包含每个app的urls.py文件。这样写更清晰。

urlpatterns = [

url(r’^$’,HomePageView.as_view(),name=‘home’),

url(r’^blog/‘,include(‘blog.urls’)),

url(r’^user/‘,include(‘user.urls’)),

]

模板文件的正确位置

对于html模板文件,我们建议放在app/templates/app/文件夹里,而不是简单放在app/templates/里。看似我们多加了一层文件夹使问题复杂化了,但这样做实际上更安全。这与Django查找模板文件的方法有关。因为我们多加了一层app,这样Django只会查找app文件夹里的模板文件。在views.py里我们也建议通过app/template_name.html调用template,这样会杜绝与其它同名template的冲突。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180515G11AO300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券