【问题标题】:TemplateDoesNotExist Django模板不存在 Django
【发布时间】:2015-12-10 02:20:12
【问题描述】:

我的 Django 模板位置被列为:

python\Lib\site-packages\django\contrib\auth\templates

在我看来,我有:

return render_to_response('hello.html', {'name': name})

当我将hello.html 放在这个位置时,它就可以工作了

python\Lib\site-packages\django\contrib\auth\templates

虽然我将模板位置保留为

TEMPLATE_DIRS = (
    os.path.join(os.path.dirname(__file__), 'templates'),
)

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },

]

NewProject
    -NewProject
        settings.py
    -signups 
        view.py
             def hello(request):
                 name='vijay'
                 return render_to_response('hello.html',{'name':name})
    templates
        hello.html

【问题讨论】:

  • 与其说不起作用,不如好好看看堆栈跟踪,看看它说了什么,如果您需要帮助,请将其添加到问题中。
  • @user1844634 django 版本是什么?
  • 只需打印 os.path.join(os.path.dirname(file), 'templates'),它在 settings.py 文件中并在您的错误页面上结帐django 尝试在您的项目中找到您的模板文件夹以获取更多信息:stackoverflow.com/questions/3038459/django-template-path

标签: django django-templates


【解决方案1】:

如果您在settings.py 文件中定义TEMPLATESTEMPLATE_DIRS 将不会有任何效果。您应该将值从TEMPLATE_DIRS 移动到TEMPLATES 内的DIRS 子设置中。

另外,os.path.join(os.path.dirname(__file__), 'templates') 将生成相对于settings.py 文件的模板目录路径,但您的模板文件夹是settings.py 上方的一个目录。该行应如下所示:

os.path.join(os.path.dirname(os.path.dirname(__file__)), 'templates')

快速解释:它将获取 settings.py 的路径,获取它的父目录路径,获取该目录的父目录路径并将您的文件夹名称粘贴到其中。所以一切都应该是这样的:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': (
            os.path.join(os.path.join(os.path.dirname(__file__)), 'templates'),
        ),
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

实际上,你的项目目录的路径已经在default settings.py中定义了,所以如果你使用默认的,你可以将它简化为:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': (
            os.path.join(BASE_DIR, 'templates'),
        ),
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

【讨论】:

  • 检查两次您的模板路径是否正确。您可以将其打印在您的settings.py 文件中并通过manage.py 运行开发服务器,这将显示由os.path.joinos.path.dirname 构建的完整路径。
  • 我在主查询中添加了文件夹结构。在 settings.py 我定义了模板
猜你喜欢
  • 2017-01-23
  • 2010-12-27
  • 2021-01-07
  • 2019-08-08
  • 1970-01-01
  • 1970-01-01
  • 2015-07-23
相关资源
最近更新 更多