首页 > 解决方案 > 我试图将模板添加到我的 Django 项目,但它返回一个错误:TemplateDoesNotExist at /

问题描述

将模板添加到我的 Django 项目时出错。

设置.py:

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

视图.py:

def index(request):
    a = models.User.objects.get()
    return render(request, "main/list.html", {"list": a})

和list.html:

{% extends "base.html" %}

{% block title %}Chats{% endblock %}

{% block content %}
{% if list%}
    {% for i in list%}
    <h2>{{i.usrname}}</h2>
{% endif %}

项目文件夹本身如下所示:

主要是应用程序

主文件夹是应用程序。

谢谢你的帮助!

标签: pythondjango

解决方案


您应该os.path.join(...)在模板“DIRS”中包含

例子:

在 settings.py

import os

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

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

然后在你的文件夹结构中,你应该有

app_name (main app folder) --> templates --> app_name(again) --> templates go here.

编辑:我忘了提到,为了做到这一点,你必须import os


推荐阅读