Django 模板不存在
Posted
技术标签:
【中文标题】Django 模板不存在【英文标题】:Django Template Does Not Exist 【发布时间】:2015-03-15 14:01:36 【问题描述】:我知道这已经涵盖了,但没有一个解决方案对我有用。我有一个基本的 django 项目,它找不到模板。这是我的views.py:
now = datetime.datetime.now()
t = get_template('index.html')
html = t.render(Context('current_date' : now))
return HttpResponse(html)
这是我在 settings.py 中的 TEMPLATE_DIRS。该项目在 INSTALLED_APPS 下指定
TEMPLATE_DIRS = (
'/Users/Howie/Desktop/djangoCode/mysite/Movies/templates/',
)
这是我每次遇到的错误
Template-loader postmortem:
Django tried loading these templates, in this order:
Using loader django.template.loaders.filesystem.Loader:
C:\Users\Howie\Desktop\djangoCode\mysite..\templates\index.html (File does not exist)
Using loader django.template.loaders.app_directories.Loader:
C:\Python34\lib\site-packages\django-1.7.2-py3.4.egg\django\contrib\admin\templates\index.html (File does not exist)
C:\Python34\lib\site-packages\django-1.7.2-py3.4.egg\django\contrib\auth\templates\index.html (File does not exist)
C:\Users\Howie\Desktop\djangoCode\mysite\Movies\templates\index.html (File does not exist)
我不明白为什么 django 找不到我的 index.html 文件。我已经尝试将模板文件夹移动到应用程序本身(名为 Movies)中,并且我也将它放在了根项目文件夹中,但是这两个都不起作用。任何见解都会有所帮助。
【问题讨论】:
您要使用的 index.html 文件的实际路径是什么? 您应该将 TEMPLATE_DIRS 更改为 '/Users/Howie/Desktop/djangoCode/mysite/templates/',然后将模板目录放在根项目文件夹 (mysite) 中。 @HåkenLid 路径是 TEMPLATE_DIRS 中的路径(/Users/Howie/Desktop/djangoCode/mysite/Movies/templates/) index.html 文件在模板目录中。 @DanielRobinson 试过了,还是一样的错误 【参考方案1】:app_directories.Loader 默认启用。这意味着您可以将模板放在app/templates
目录中并完成。不需要 TEMPLATE_DIRS 和/或 TEMPLATE_LOADERS 设置。开箱即用的 Django:
项目/应用程序/views.py 项目/app/templates/index.html
get_template('index.html')
最好use subdirectories:
项目/应用程序/views.py 项目/app/templates/app/index.html
get_template('app/index.html')
这是为了避免来自其他应用的 index.html 优先。
如果您真的想在项目的根目录中添加一个模板文件夹,请不要使用硬编码路径。做类似this:
from os.path import abspath, dirname, join, normpath
from sys import path
SITE_ROOT = dirname(dirname(abspath(__file__)))
TEMPLATE_DIRS = (
normpath(join(SITE_ROOT, 'templates')),
)
【讨论】:
【参考方案2】:我有同样的问题只是发现这是一个拼写错误,我写了模板
模板/文件名/
作为不是 Django 方式的模板。 “s”是必要的
模板/文件名/
【讨论】:
以上是关于Django 模板不存在的主要内容,如果未能解决你的问题,请参考以下文章