我最近正在尝试为我的一个私人项目学习Django。 当进入模板章节时,Django Book建议使用以下代码段在settings.py中设置模板路径
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(os.path.dirname(__file__), 'templates').replace('\\','/'),],
'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',
],
},
},
然而,当我打开文件setting.py时,我发现没有像“TEMPLATE_DIR”那样的列表:
def current_datetime(request):
now = datetime.datetime.now()
t = get_template("current_datetime.html")
html = t.render(Context({"current_date" : now}))
return HttpResponse(html)
与键“DIR”相关的值是一个空列表。所以我尝试用上面显示的内容填充它。
然后,在views.py中编写代码(完成所有导入)
each image in imageArray
img(src=image, alt="")
然后使用setting.py在同一文件夹中的mkdir模板,将current_datetime.html保存在文件夹模板中
最后,运行项目。并在终端中收到消息:
警告: ?:( 1_8.W001)在Django 1.8>中不推荐使用独立的TEMPLATE_ *设置。并且TEMPLATES字典优先。您必须输入>的值将设置设置为默认的TEMPLATES dict:TEMPLATE_DIRS。
系统检查确定1个问题(0静音)。 2017年6月15日 - 15:32:49 Django版本1.11.2,使用设置'mysite.settings' 在127.0.0.1:8000/启动开发服务器 使用CONTROL-C退出服务器。
在我的Safari中打开地址(127.0.0.1:8000/time/)时,就出现了 错误讯息:
有人帮忙吗?
答案 0 :(得分:0)
TEMPLATE_DIRS上有一个警告,因为请确保您的settings.py中没有TEMPLATE_DIRS
变量并重新启动开发服务器。
然后,对于错误,您实际上使用的是Context对象而不是dict,您应该使用有用的快捷方式https://docs.djangoproject.com/en/1.11/topics/http/shortcuts/#example
呈现模板from django.shortcuts import render
def current_datetime(request):
now = datetime.datetime.now()
return render(request, "current_datetime.html", {
'current_date' : now,
})
答案 1 :(得分:0)
我认为你在settings.py中有BASE_DIR用于定义位置,所以请使用如下
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',
],
},
},
DIRS应如下所示
'DIRS': [os.path.join(BASE_DIR, 'templates'),],