【问题标题】:Understanding Django's directory structure了解 Django 的目录结构
【发布时间】:2013-12-13 21:09:12
【问题描述】:

经过几个月的 Rails,我这次尝试学习 Django。 以下目录结构对我来说似乎效率低下。 例如,如果您正在制作一个poll 应用程序,则结构将是这样的。

mainproject/polls/templates/polls

为什么不能这样

mainproject/polls/templates/?

对我来说,它变成了

my-django-projects/blog/blog/templates/blog/

第一个blog = 项目名称,第二个blog = 应用名称,第三个blog = 模板文件夹内的目录。

这样的结构合理吗?

【问题讨论】:

    标签: django


    【解决方案1】:

    以下模板目录模式是正确的。建议将应用程序相关的模板文件保存在应用程序目录中。

    mainproject/polls/templates/
    

    但是,您可以通过在设置文件中定义 TEMPLATE_DIRS 在项目级别定义模板目录。

    mainproject/templates/polls
    

    Customizing template dirs

    Example rendering an application template

    【讨论】:

      【解决方案2】:

      mainproject/templates/ 的结构没有问题,如果您仅为自己的项目创建应用程序,请继续使用此表单。

      另一种方式(mainproject/polls/templates/polls/)主要用于您计划独立于您的项目开发应用程序时,因此您会将其分发给其他项目使用(可能由其他人使用),所以最好的做法是离开他们提供了几个模板来查看您的应用程序如何工作,然后通过自定义您的应用程序模板以满足他们的需求,在项目中创建他们自己的模板。

      重复的app名听起来应该是多余的,其实是有原因的,django在apps和project的template目录下搜索模板文件,结构如下:

      mainproject
      |-- poll
      |   |-- templates
      |       |-- index.html
      |
      |-- blog
          |-- templates
              |-- index.html 
      

      当 django 尝试加载 index.html 时,它将选择第一个匹配的名称,因此模板可能无法正确显示请求的应用程序。那么确保加载正确模板的一种方法是创建另一个目录并为方便起见使用应用程序的名称,这样:

      mainproject
      |-- poll
      |   |-- templates
      |       |-- poll
      |           |-- index.html
      |
      |-- blog
          |-- templates
              |-- blog
                  |-- index.html 
      

      所以最后消除歧义,因为你需要指定'blog/index.html'来加载博客的index.html模板

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-13
        相关资源
        最近更新 更多