Django 1.11 - 项目目录中的templates文件夹

时间:2017-09-23 12:34:19

标签: python django django-templates

我正在努力让以下工作:

我想在项目目录中为非特定于应用程序的html创建一个“常规”模板文件夹,类似于非特定于应用程序的静态文件的静态文件夹。

我目前的结构如下:

> C
A B C
D E C
F G C
> X
A B X
F G X
> Q
A B Q
D E Q

我目前的惯例是,如果html或静态文件位于app目录中,则它们特定于该应用程序,如果它们位于项目(此处为my_app)目录中,则它们适用于整个项目。

我现在的问题是,当我尝试通过在dashboard / index.html中声明{%include“my_app / boilerplate.html”%}来将boilerplate.html(一个代码段)加载到dashboard / index.html时,它会抱怨:

  

/ dashboard上的TemplateDoesNotExist

我的settings.py文件,或者至少我认为相关的部分如下:

|- my_app/
    |- dashboard/
        |- static
            |- dashboard/
                |- css/
                |- ...
        |- templates
            |- dashboard
                |- index.html
        |- ...
        |- urls.py
        |- views.py
    |- landing/
        |- static
            |- landing/
                |- css/
                |- ...
        |- templates
            |- landing
                |- index.html
        |- ...
        |- urls.py
        |- views.py
    |- my_app/
        |- static/
            |- my_app/ <-- no problem loading these
                |- css/
                |- ...
        |- templates 
            |- my_app <-- unable to load these
                |- boilerplate.html
        |- settings.py
        |- ...
    |- manage.py

有些东西很可能丢失或错误配置,因为它不起作用,但我无法弄清楚它是什么。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我认为您正在使用Windows,现在问题是您应该为项目中的许多应用程序使用一个模板文件夹

os.path.join(BASE_DIR,&#39; / templates&#39;)。替换(&#39; \&#39;,&#39; /&#39;) ,

&#39; DIRS&#39;:[BASE_DIR +&#34; / templates&#34;],

从设置中移除my_app

然后在模板文件夹中创建文件夹app,同样适用于静态和媒体文件。

这里my_app是你的主要项目,因此可以正常工作但是Django不能 能够从其他应用程序获取

希望这有助于告诉我你是否需要更多解释:)

答案 1 :(得分:0)

事实证明我的错误是一个愚蠢的错误。在我的settings.py文件中,它显示:

os.path.join(BASE_DIR, '/my_app/templates').replace('\\', '/'),

应该说:

os.path.join(BASE_DIR, 'my_app/templates').replace('\\', '/'),

或连接失败。

呃。

如OP中所示,settings.py文件的其余部分有效。它现在可以在Django 1.11下运行。

好吧,不管怎样,谢谢。