合理地布局Django项目文件夹与文件

一个Django项目(Project)通常包含多个应用(App)。项目里除了有Python的.py文件, 设置文件setting.py,还有html模板(base.html和page.html),静态文件 (static files如CSS和js)及媒体文件(media)。当我们有这么多文件和文件夹时,我们整个项目的文件夹和文件应该怎么布局才清晰合理?小编我就带你来看一看如何合理地布局Django项目文件夹与文件。

推荐的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,我们建议这样写。总的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的冲突。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值