【发布时间】:2019-01-02 08:52:52
【问题描述】:
我正在使用 Django 2.0.7 创建一个网站。我需要使用一个基本模板,它不在所有应用程序的权限范围内,但可以被项目中我的其他应用程序中的模板继承和使用。
我已经适当地编辑了我的 settings.py 文件(根据文档),但是当我进入我网站的根(即主页)页面时,我仍然得到一个空白页面 - 谁能解释为什么?
我有以下目录结构
myproj
----manage.py
----app1
----templates/
base.html
index.html
----static/
----myproj
__initi__.py
wsgi.py
settings.py
urls.py
views.py # <- I added this
我的 settings.ini 文件的相关部分如下所示:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
SITE_ROOT = os.path.dirname(os.path.realpath(__file__))
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': ['{0}/templates/'.format(BASE_DIR),],
'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',
],
},
},
]
views.py:
from django.http import HttpResponse
def index(request):
return HttpResponse()
为什么 django 找不到我的 index.html ?
【问题讨论】:
-
您在哪里告诉您的项目渲染该模板?目前,您正在告诉索引视图返回一个空响应。
-
@dfundako 我是否需要在我的视图函数中显式调用渲染?在 IIRC 之前使用的 django(1.7、1.8)的早期版本中,我不需要这样做。
-
嗯,是的。你告诉你的 urls.py 文件当有人去你定义的路径时去寻找什么视图,当它读取视图时,你需要告诉它要渲染什么。就目前而言,您认为 def index() 会如何呈现您的 index.html/base.html?将 '
Hello
' 放入您的 httpresponse 中,看看会发生什么。 -
@dfundako 好的,自从我上次使用我提到的早期版本编写一个 django 网站以来,这肯定发生了变化。以前,模板的名称是从函数的名称中自动推断出来的。我现在将删除此问题。
-
除非是骗子,否则无需关闭问题。如果其他人有同样的问题,我可以将我的 cmets 放入答案中。