【问题标题】:Django TemplateDoesNotExist at /home/Django TemplateDoesNotExist 在 /home/
【发布时间】:2023-03-28 06:55:01
【问题描述】:

虚拟项目的目录结构

/dummy

   /dummy

            urls.py
            views.py
            setting.py
            _init_
            wsgi.py
    /template
            home.html

settings.py

TEMPLATE_DIRS = (
    "D:/Data/Codes/Django_Code/dummy/template"
    )

views.py

from  django.shortcuts import render_to_response

from  django.template import RequestContext

def home_view(request):
    render_to_response(request, 'home.html')

urls.py

from django.conf.urls import patterns, include, url
    
from dummy.views import home_view
    
urlpatterns = patterns('',
    url(r'^home/$', home_view),
    )

虽然在 TEMPLATE_DIRS 下的 setting.py 中指定了模板目录

错误跟踪 模板加载器事后分析

Django tried loading these templates, in this order:
Using loader django.template.loaders.filesystem.Loader:
D:\Data\Codes\Django_Code\dummy\template\<WSGIRequest
path:\home\,
GET:<QueryDict: {}>,
POST:<QueryDict: {}>,
COOKIES:{'csrftoken': 'CNnHomGRMMJmik75Pi2rclMVdPjO36t9'},
META:{'ALLUSERSPROFILE': 'C:\ProgramData',
 'APPDATA': 'C:\Users\nitin\AppData\Roaming',
 'CLASSPATH': '.;D:\data\Codes;C:\Users\nitin\Downloads\javapostmark\apache-mime4j-0.6.jar;C:\Users\nitin\Downloads\javapostmark\commons-codec-1.3.jar;C:\Users\nitin\Downloads\javapostmark\commons-logging-1.1.1.jar;C:\Users\nitin\Downloads\javapostmark\gson-1.4.jar;C:\Users\nitin\Downloads\javapostmark\httpclient-4.0.1.jar;C:\Users\nitin\Downloads\javapostmark\httpcore-4.0.1.jar;C:\Users\nitin\Downloads\javapostmark\httpmime-4.0.1.jar;C:\Users\nitin\Downloads\javapostmark\joda-time-1.6.jar;',
 'COMMONPROGRAMFILES': 'C:\Program Files\Common Files',
 'COMMONPROGRAMFILES(X86)': 'C:\Program Files (x86)\Common Files',
 'COMMONPROGRAMW6432': 'C:\Program Files\Common Files',
 'COMPUTERNAME': 'NITIN-PC',
 'COMSPEC': 'C:\Windows\system32\cmd.exe',
 'CONTENT_LENGTH': '',
 'CONTENT_TYPE': 'text\plain',
 'CSRF_COOKIE': 'CNnHomGRMMJmik75Pi2rclMVdPjO36t9',
 'DJANGO_SETTINGS_MODULE': 'dummy.settings',
 'FP_NO_HOST_CHECK': 'NO',
 'GATEWAY_INTERFACE': 'CGI\1.1',
 'HOMEDRIVE': 'C:',
 'HOMEPATH': '\Users\nitin',
 'HTTP_ACCEPT': 'text\html,application\xhtml+xml,application\xml;q=0.9,*\*;q=0.8',
 'HTTP_ACCEPT_CHARSET': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
 'HTTP_ACCEPT_ENCODING': 'gzip,deflate,sdch',
 'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.8',
 'HTTP_CACHE_CONTROL': 'max-age=0',
 'HTTP_CONNECTION': 'keep-alive',
 'HTTP_COOKIE': 'csrftoken=CNnHomGRMMJmik75Pi2rclMVdPjO36t9',
 'HTTP_HOST': '127.0.0.1:8000',
 'HTTP_USER_AGENT': 'Mozilla\5.0 (Windows NT 6.1; WOW64) AppleWebKit\537.4 (KHTML, like Gecko) Chrome\22.0.1229.94 Safari\537.4',
 'JAVA_HOME': 'C:\Program Files (x86)\Java\jdk1.7.0_05;',
 'LOCALAPPDATA': 'C:\Users\nitin\AppData\Local',
 'LOGONSERVER': '\NITIN-PC',
 'NUMBER_OF_PROCESSORS': '2',
 'OS': 'Windows_NT',
 'PATH': 'C:\Program Files (x86)\Java\jdk1.7.0_05\bin;C:\Python27;C:\Python27\;C:\Python27\Scripts',
 'PATHEXT': '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC',
 'PATH_INFO': u'\home\',
 'PROCESSOR_ARCHITECTURE': 'AMD64',
 'PROCESSOR_IDENTIFIER': 'Intel64 Family 6 Model 23 Stepping 10, GenuineIntel',
 'PROCESSOR_LEVEL': '6',
 'PROCESSOR_REVISION': '170a',
 'PROGRAMDATA': 'C:\ProgramData',
 'PROGRAMFILES': 'C:\Program Files',
 'PROGRAMFILES(X86)': 'C:\Program Files (x86)',
 'PROGRAMW6432': 'C:\Program Files',
 'PROMPT': '$P$G',
 'PSMODULEPATH': 'C:\Windows\system32\WindowsPowerShell\v1.0\Modules\',
 'PUBLIC': 'C:\Users\Public',
 'QUERY_STRING': '',
 'REMOTE_ADDR': '127.0.0.1',
 'REMOTE_HOST': '',
 'REQUEST_METHOD': 'GET',
 'RUN_MAIN': 'true',
 'SCRIPT_NAME': u'',
 'SERVER_NAME': 'nitin-PC',
 'SERVER_PORT': '8000',
 'SERVER_PROTOCOL': 'HTTP\1.1',
 'SERVER_SOFTWARE': 'WSGIServer\0.1 Python\2.7.3',
 'SESSIONNAME': 'Console',
 'SYSTEMDRIVE': 'C:',
 'SYSTEMROOT': 'C:\Windows',
 'TEMP': 'C:\Users\nitin\AppData\Local\Temp',
 'TMP': 'C:\Users\nitin\AppData\Local\Temp',
 'USERDOMAIN': 'nitin-PC',
 'USERNAME': 'nitin',
 'USERPROFILE': 'C:\Users\nitin',
 'WINDIR': 'C:\Windows',
 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x0000000001D761E0>,
 'wsgi.file_wrapper': <class wsgiref.util.FileWrapper at 0x0000000002E5D5E8>,
 'wsgi.input': <socket._fileobject object at 0x000000000327F138>,
 'wsgi.multiprocess': False,
 'wsgi.multithread': True,
 'wsgi.run_once': False,
 'wsgi.url_scheme': 'http',
 'wsgi.version': (1, 0)}> (File does not exist)
Using loader django.template.loaders.app_directories.Loader:
C:\Python27\lib\site-packages\django\contrib\auth\templates\<WSGIRequest
path:\home\,
GET:<QueryDict: {}>,
POST:<QueryDict: {}>,
COOKIES:{'csrftoken': 'CNnHomGRMMJmik75Pi2rclMVdPjO36t9'},
META:{'ALLUSERSPROFILE': 'C:\ProgramData',
 'APPDATA': 'C:\Users\nitin\AppData\Roaming',
 'CLASSPATH': '.;D:\data\Codes;C:\Users\nitin\Downloads\javapostmark\apache-mime4j-0.6.jar;C:\Users\nitin\Downloads\javapostmark\commons-codec-1.3.jar;C:\Users\nitin\Downloads\javapostmark\commons-logging-1.1.1.jar;C:\Users\nitin\Downloads\javapostmark\gson-1.4.jar;C:\Users\nitin\Downloads\javapostmark\httpclient-4.0.1.jar;C:\Users\nitin\Downloads\javapostmark\httpcore-4.0.1.jar;C:\Users\nitin\Downloads\javapostmark\httpmime-4.0.1.jar;C:\Users\nitin\Downloads\javapostmark\joda-time-1.6.jar;',
 'COMMONPROGRAMFILES': 'C:\Program Files\Common Files',
 'COMMONPROGRAMFILES(X86)': 'C:\Program Files (x86)\Common Files',
 'COMMONPROGRAMW6432': 'C:\Program Files\Common Files',
 'COMPUTERNAME': 'NITIN-PC',
 'COMSPEC': 'C:\Windows\system32\cmd.exe',
 'CONTENT_LENGTH': '',
 'CONTENT_TYPE': 'text\plain',
 'CSRF_COOKIE': 'CNnHomGRMMJmik75Pi2rclMVdPjO36t9',
 'DJANGO_SETTINGS_MODULE': 'dummy.settings',
 'FP_NO_HOST_CHECK': 'NO',
 'GATEWAY_INTERFACE': 'CGI\1.1',
 'HOMEDRIVE': 'C:',
 'HOMEPATH': '\Users\nitin',
 'HTTP_ACCEPT': 'text\html,application\xhtml+xml,application\xml;q=0.9,*\*;q=0.8',
 'HTTP_ACCEPT_CHARSET': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
 'HTTP_ACCEPT_ENCODING': 'gzip,deflate,sdch',
 'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.8',
 'HTTP_CACHE_CONTROL': 'max-age=0',
 'HTTP_CONNECTION': 'keep-alive',
 'HTTP_COOKIE': 'csrftoken=CNnHomGRMMJmik75Pi2rclMVdPjO36t9',
 'HTTP_HOST': '127.0.0.1:8000',
 'HTTP_USER_AGENT': 'Mozilla\5.0 (Windows NT 6.1; WOW64) AppleWebKit\537.4 (KHTML, like Gecko) Chrome\22.0.1229.94 Safari\537.4',
 'JAVA_HOME': 'C:\Program Files (x86)\Java\jdk1.7.0_05;',
 'LOCALAPPDATA': 'C:\Users\nitin\AppData\Local',
 'LOGONSERVER': '\NITIN-PC',
 'NUMBER_OF_PROCESSORS': '2',
 'OS': 'Windows_NT',
 'PATH': 'C:\Program Files (x86)\Java\jdk1.7.0_05\bin;C:\Python27;C:\Python27\;C:\Python27\Scripts',
 'PATHEXT': '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC',
 'PATH_INFO': u'\home\',
 'PROCESSOR_ARCHITECTURE': 'AMD64',
 'PROCESSOR_IDENTIFIER': 'Intel64 Family 6 Model 23 Stepping 10, GenuineIntel',
 'PROCESSOR_LEVEL': '6',
 'PROCESSOR_REVISION': '170a',
 'PROGRAMDATA': 'C:\ProgramData',
 'PROGRAMFILES': 'C:\Program Files',
 'PROGRAMFILES(X86)': 'C:\Program Files (x86)',
 'PROGRAMW6432': 'C:\Program Files',
 'PROMPT': '$P$G',
 'PSMODULEPATH': 'C:\Windows\system32\WindowsPowerShell\v1.0\Modules\',
 'PUBLIC': 'C:\Users\Public',
 'QUERY_STRING': '',
 'REMOTE_ADDR': '127.0.0.1',
 'REMOTE_HOST': '',
 'REQUEST_METHOD': 'GET',
 'RUN_MAIN': 'true',
 'SCRIPT_NAME': u'',
 'SERVER_NAME': 'nitin-PC',
 'SERVER_PORT': '8000',
 'SERVER_PROTOCOL': 'HTTP\1.1',
 'SERVER_SOFTWARE': 'WSGIServer\0.1 Python\2.7.3',
 'SESSIONNAME': 'Console',
 'SYSTEMDRIVE': 'C:',
 'SYSTEMROOT': 'C:\Windows',
 'TEMP': 'C:\Users\nitin\AppData\Local\Temp',
 'TMP': 'C:\Users\nitin\AppData\Local\Temp',
 'USERDOMAIN': 'nitin-PC',
 'USERNAME': 'nitin',
 'USERPROFILE': 'C:\Users\nitin',
 'WINDIR': 'C:\Windows',
 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x0000000001D761E0>,
 'wsgi.file_wrapper': <class wsgiref.util.FileWrapper at 0x0000000002E5D5E8>,
 'wsgi.input': <socket._fileobject object at 0x000000000327F138>,
 'wsgi.multiprocess': False,
 'wsgi.multithread': True,
 'wsgi.run_once': False,
 'wsgi.url_scheme': 'http',
 'wsgi.version': (1, 0)}> (File does not exist)

【问题讨论】:

  • 尝试删除render_to_response(request, 'home.html/')中的尾部斜杠
  • 试过 render_to_response(request, 'home.html') 没用
  • 试试,TEMPLATE_DIRS = ("D:/Data/Codes/Django_Code/dummy/template/")
  • 是的,但在上面的示例中,您使用的是 } 而不是 ),它应该以逗号结尾。像这样: TEMPLATE_DIRS = ( "D:/Data/Codes/Django_Code/dummy/template", )
  • 你也有逗号吗? "D:/Data/Codes/Django_Code/dummy/template",

标签: python django


【解决方案1】:

在出现错误的浏览器上,搜索“django.template.loaders.filesystem.Loader”

这里提到了django查找模板的路径。

例子:

django.template.loaders.filesystem.Loader: /code/templates/home.html (Source does not exist)

尝试在上面的相同路径中添加您的模板。

为避免混淆,请将您的模板文件夹添加到与 project_name 相同的目录中,并在 settings.py 的 DIRS 前面的 [方括号] 中添加 os.path.join(BASE_DIR, 'templates')

如果您的 django 站点托管在 docker 上,您需要查看模板文件夹的确切路径并需要在 settings.py 中提及

【讨论】:

    【解决方案2】:

    只需将模板路径复制并粘贴到setting.py 中即可。它会解决这个问题。

    'DIRS': ['/Users/abc/dort/dort/templates'],      
    

    享受吧!

    【讨论】:

      【解决方案3】:
      1. Never hardcode absolute paths
      2. 您的TEMPLATE_DIRS 不是可迭代的,目录应该在[] 之间
      3. 如果出现问题,只需运行manage.py shellfrom django.conf import settings; print settings.TEMPLATE_DIRS[0],这将显示django 使用的路径。
      4. 查看 django 是否应该在manage.py shell 中找到您的模板的另一种方法是from django.template import loader; print loader.get_template('home.html')。 Django 应该告诉你它在失败时尝试了哪​​些模板目录。这很重要。

      【讨论】:

      • 精确打印:D:/Data/Codes/Django_Code/dummy/template
      • 很好,在 cmd 中执行 D: 然后 cd Data/Codes/Django_Code/dummy/template 然后 dir。您应该看到您的模板。如果你没有,那么django看不到它是正常的。另外,我在答案中添加了提示。
      • 提示 #4 怎么样?另外,您是否已经替换了绝对路径?否则,当您尝试在服务器上部署项目时,它会中断...
      • 试试manage.py shell:import os.path; print os.path.exists('D:\Data\Codes\Django_Code\dummy\template\home.html')。它返回 true 吗?
      • 另外,你真的应该用 os.path.join() 技巧替换 "D:/Data/Codes/Django_Code/dummy/template",正如 #1 中提到的那样。我可以看到在你的配置中你使用/ 但python总是打印 `` 所以这可能是个问题。
      猜你喜欢
      • 2017-03-14
      • 1970-01-01
      • 2017-06-09
      • 1970-01-01
      • 2011-06-13
      • 2014-10-17
      • 1970-01-01
      • 1970-01-01
      • 2018-09-29
      相关资源
      最近更新 更多