了解Django的目录结构

时间:2013-11-28 00:41:20

标签: django

经过几个月的Rails,我这次正试图学习Django。 以下目录结构对我来说似乎效率低下。 例如,如果您正在创建poll应用程序,则结构将如下所示。

mainproject/polls/templates/polls

为什么不能改为

mainproject/polls/templates/

对我而言,它已成为

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

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

这是一个合理的结构吗?

2 个答案:

答案 0 :(得分:0)

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

mainproject/polls/templates/

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

mainproject/templates/polls

Customizing template dirs

Example rendering an application template

答案 1 :(得分:0)

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

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

重复的应用程序名称听起来应该是多余的,但是有一个原因,django在应用程序和项目的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模板