我正在努力让以下工作:
我想在项目目录中为非特定于应用程序的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
有些东西很可能丢失或错误配置,因为它不起作用,但我无法弄清楚它是什么。有什么想法吗?
答案 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下运行。
好吧,不管怎样,谢谢。