我知道这已经涵盖了,但没有一个解决方案对我有用。我有一个基本的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),我也在根项目文件夹中将它移动了,但这两个都没有用。任何见解都会有所帮助。
答案 0 :(得分:3)
默认情况下启用app_directories.Loader。这意味着您可以将模板放在app/templates
目录中并完成。无需TEMPLATE_DIRS和/或TEMPLATE_LOADERS设置。开箱即用Django:
项目/应用/ views.py
项目/应用/模板/ index.html中
get_template('index.html')
项目/应用/ views.py
项目/应用程序/模板/应用/ 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')),
)
答案 1 :(得分:0)
我有同样的问题,只是发现这是一个错字错误,我写了模板
模板/ FILE_NAME /
作为不是Django方式的模板。 " s"是必要的
templates / file_name /