找不到模板文件 Django

Posted

技术标签:

【中文标题】找不到模板文件 Django【英文标题】:Template file not found Django 【发布时间】:2020-07-06 06:14:04 【问题描述】:

我正在尝试通过 Django 创建一个新网站的主页。 我的应用名称是“博客”,主页是 home.html 我去http://127.0.0.1:8000/blog/home/时仍然收到错误模板不存在@

我确保我在 settings.py 中的模板中添加了“博客”,并且我在主目录以及 blog/templates/blog/home.html 中添加了文件夹模板

myproject/blog/views.py

from django.shortcuts import render
from django.http import HttpResponse


def home(request):
    return render(request, 'blog/home.html')

我的项目/博客/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('home/', views.home, name='home'),

]

我的项目/settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
]

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',
            ],

我的项目/urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/', include('blog.urls')),
]

您是否在我的代码中看到导致问题的任何内容?我在 blog/views.py 中收到“找不到模板文件'博客'”的消息

返回渲染(请求,'blog/home.html')

【问题讨论】:

【参考方案1】:

你做错了。您需要仔细阅读 Django 文档并尝试理解您阅读的内容并逐步实现相同的内容。 您必须点击的网址是

http://127.0.0.1:8000/blog/home/

home.html 将在此 url 上呈现。 您没有将 html 页面名称放在 url 中

【讨论】:

感谢您的意见。但是,即使我在没有 html 的情况下输入,我收到的模板也不存在。错误信息也出现在 blog/views.py 您将 home.html 文件保存在哪里? 根据您的代码,它必须在 templates/blog/home.html 中,其中 templates 目录与 views.py 处于同一级别 谢谢,当 home.html 模板必须放在 myproject/blog/templates/blog/home.html 中时,我已将它放在 myproject/blog/templates/home.html 中【参考方案2】:

我也一直在寻找答案,我尝试了所有方法,但这在我的 Windows 机器上对我有用。在os.path.join(BASE_DIR, 'templates') 中的“模板”之前添加'r' 看起来像这样os.path.join(BASE_DIR, r'templates') 解决了错误问题。此外,我的模板目录位于父应用程序和子应用程序旁边的项目根目录中。

【讨论】:

当存在 'r' 或 'R' 前缀时,反斜杠后面的字符将原样包含在字符串中,并且所有反斜杠都保留在字符串中。你想用'r'前缀来达到什么目的?

以上是关于找不到模板文件 Django的主要内容,如果未能解决你的问题,请参考以下文章

Django 找不到模板目录?

Django 找不到模板,文件存在并指定了 TEMPLATE_DIR

Django 找不到我的自定义模板过滤器

Django 找不到应用模板

Django:Heroku 上的生产应用程序找不到带有“路径”urlpattern 的模板

如何在静态文件中使用 django 模板语法