Django无法在INSTALLED_APPS

时间:2017-11-04 08:58:20

标签: django django-templates

我正在使用python 3.5.2和django 1.11.6。我的操作系统是win10。我无法在installed_app路径中加载我的模板。

我在“polls / template / polls / index.html”创建了一个文件。我还将应用程序,民意调查添加到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))

我有这个TemplateDoesNotExist。 我想知道为什么django不会搜索路径,“民意调查/模板”。 django搜索的路径如下。

  • django.template.loaders.app_directories.Loader:C:\ Users \ XXX \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ site-packages \ django \ contrib \ admin \ templates \ polls \ index.html(来源不存在)
  • django.template.loaders.app_directories.Loader:C:\ Users \ XXX \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ site-packages \ django \ contrib \ auth \ templates \ polls \ index.html(来源不存在)

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

2 个答案:

答案 0 :(得分:1)

您的模板目录错误。它应该是polls/templates/polls/index.html - 模板,而不是模板。从教程:

  

首先,在polls目录中创建一个名为 templates 的目录。 Django将在那里寻找模板。

     

在刚刚创建的templates目录中,创建另一个名为polls的目录,并在其中创建一个名为index.html的文件。换句话说,您的模板应位于 polls / templates / polls / index.html

答案 1 :(得分:0)

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

ROOT_DIR = environ.Path(__file__) - 2

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

polls/templates/polls/index.html

与直接添加PersonID相比,这是复杂的,但这在一般情况下会有所帮助。当项目进入高阶段时,重要的是以一般方式进行转换。