经过几个月的Rails,我这次正试图学习Django。
以下目录结构对我来说似乎效率低下。
例如,如果您正在创建poll
应用程序,则结构将如下所示。
mainproject/polls/templates/polls
为什么不能改为
mainproject/polls/templates/
?
对我而言,它已成为
my-django-projects/blog/blog/templates/blog/
第一个blog
=项目名称,第二个blog
=应用名称,第三个blog
=模板文件夹中的目录。
这是一个合理的结构吗?
答案 0 :(得分:0)
以下模板目录模式是正确的。建议将应用程序相关模板文件保存在应用程序目录中。
mainproject/polls/templates/
但是,您可以通过在设置文件中定义TEMPLATE_DIRS来在项目级别定义模板目录。
mainproject/templates/polls
答案 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模板