我使用的是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',
],
},
},
]
2条答案
按热度按时间xqnpmsa81#
您的模板目录错误。应该是
polls/templates/polls/index.html
-templates,而不是template。来自教程:首先,在polls目录下创建一个名为templates的目录。Django会在那里寻找模板。
在刚刚创建的templates目录中,创建另一个名为polls的目录,并在其中创建一个名为index.html的文件。换句话说,您的模板应该位于polls/templates/polls/index.html。
nnt7mjpx2#
另一种方法是,您可以在settings.py中的DIRS中的TEMPLATES中设置模板路径。
并设置ROOT_DIR,即项目的根目录,您可以使用environ将根目录设置为:
由于这是复杂的比较直接添加
polls/templates/polls/index.html
,但这将是有益的,在一般情况下。当项目处于高阶段时,重要的是要以一般方式转换。