【问题标题】:Django tamplate can not loadedDjango 模板无法加载
【发布时间】:2021-04-08 09:00:36
【问题描述】:

我在django渲染函数中调用了一个模板,但是django找不到

这里是django视图代码:

from django.shortcuts import render

# Create your views here.
def home_page(request):
    return render(request, "index.html")

在此之后,我尝试检查我的 settings.py 和 urls.py,但一无所获,并且该文件也在应用程序的 tamplate 子文件夹中

这是目录结构:

│  .gitignore
│  db.sqlite3
│  funcational_test.py
│  manage.py
│
├─Terminal_equipment_management
│  │  asgi.py
│  │  settings.py
│  │  urls.py
│  │  view.py
│  │  wsgi.py
│  │  __init__.py
│  │
│  └─__pycache__
│
└─webui
    │  admin.py
    │  apps.py
    │  models.py
    │  tests.py
    │  views.py
    │  __init__.py
    │
    ├─migrations
    │
    ├─templates
           index.html

settings.py 是:

INSTALLED_APPS = [
    "api",
    "webui",
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]
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',
            ],
        },
    },
]

urls.py 是:

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

urlpatterns = [
    path("", views.home_page, name="home_page"),
]

但是当我访问 localhost:8000/ 时,Django 会在 / 处报告 TemplateDoesNotExist 这是一些错误消息: 模板加载器事后分析 Django 尝试按以下顺序加载这些模板:

使用引擎 django:

django.template.loaders.app_directories.Loader: C:\ProgramData\Miniconda3\lib\site-packages\django\contrib\admin\templates\index.html(源不存在) django.template.loaders.app_directories.Loader: C:\ProgramData\Miniconda3\lib\site-packages\django\contrib\auth\templates\index.html(源不存在)

当我将文件复制到以上两个文件夹时,模板就生效了。 我不确定发生了什么

通过谷歌翻译

【问题讨论】:

  • 目录名是templates,不是tamplate

标签: python django


【解决方案1】:

添加模板DIRS

TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [BASE_DIR / "template"],
    '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',
        ],
    },
},

]

【讨论】:

    【解决方案2】:

    我想你忘了把s 用于模板文件夹名称

    └─webui
        │
        ├─tamplates
               index.html
    

    【讨论】:

    • 我尝试将模板重命名为templates后,模板仍然无法正常加载,并且/处还有TemplateDoesNotExist,我想可能是Django没有主动在我的app文件夹中寻找templates文件夹,我正在使用 Django 3.4.1 , Miniconda 3(Python3.9)
    【解决方案3】:

    首先,tamplates 应该是 templates。其次,django 在模板下的文件夹中查找应用程序名称。这似乎是多余的,我同意,但这在我第一次使用 django 时给我带来了问题。

    └─webui
        │
        └─templates
             │
             └─webui
                 │
                 └─index.html
    

    【讨论】:

      猜你喜欢
      • 2015-11-10
      • 2011-05-28
      • 2016-02-26
      • 2012-01-26
      • 1970-01-01
      • 2018-04-16
      • 1970-01-01
      • 2017-08-01
      • 2020-10-02
      相关资源
      最近更新 更多