Django无法加载INSTALLED_APPS模板路径中的模板

hrysbysz  于 2023-06-07  发布在  Go
关注(0)|答案(2)|浏览(397)

我使用的是Python 3.5.2和Django 1.11.6。我的操作系统是win10。我无法在installed_app路径中加载我的模板。
我已经创建了一个文件在“polls/template/polls/index.html”。我还将应用程序polls添加到INSTALLED_APPS中,并将TEMPLATES中的APP_DIRS设置为True。我不明白为什么django不会像教程告诉我的那样加载INSTALLED_APPS模板文件夹中的模板。
我使用以下代码片段在视图中加载模板。

def index(request):
    latest_question_list = Question.objects.order_by('-pub_date')[:5]
    template = loader.get_template('polls/index.html')
    context = {
        'latest_question_list': latest_question_list,
    }
    return HttpResponse(template.render(context, request))

我得到了这个模板不存在。我想知道为什么django不搜索路径“polls/template”。django搜索的路径如下。

  • django.template.loaders.app_directories.Loader:404错误:您访问的页面不存在(404)
  • django.template.loaders.app_directories.Loader:404错误:您访问的页面不存在(404)

我的INSTALLED_APPS如下。

INSTALLED_APPS = [
    'polls.apps.PollsConfig',
    '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',
            ],
        },
    },
]
xqnpmsa8

xqnpmsa81#

您的模板目录错误。应该是polls/templates/polls/index.html-templates,而不是template。来自教程:
首先,在polls目录下创建一个名为templates的目录。Django会在那里寻找模板。
在刚刚创建的templates目录中,创建另一个名为polls的目录,并在其中创建一个名为index.html的文件。换句话说,您的模板应该位于polls/templates/polls/index.html

nnt7mjpx

nnt7mjpx2#

另一种方法是,您可以在settings.py中的DIRS中的TEMPLATES中设置模板路径。

'DIRS': [str(ROOT_DIR.path('polls/templates/polls/')),],

并设置ROOT_DIR,即项目的根目录,您可以使用environ将根目录设置为:

ROOT_DIR = environ.Path(__file__) - 2

由于这是复杂的比较直接添加polls/templates/polls/index.html,但这将是有益的,在一般情况下。当项目处于高阶段时,重要的是要以一般方式转换。

相关问题