Django模板系统主要是为了将前端后台给分离开,这样需要改前端时就不需要去修改Python代码,分工明确
在之前项目的基础上修改一下:
用idea生成Django项目的时候,在项目的目录下面有一个templates文件夹,这个文件夹就是负责存放页面模板的
在templates中建立一个html文件,代码可以写任何网站的html代码,现在自己写一个带有后台参数的html代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
Its now {{ current_date }}
</body>
</html>
这个current_date是从后台传过来的
添加完这个页面之后,我们还是从settings.py配置文件开始看这一过程
有一个TEMPLATES的变量,还能找到一个'DIRS'的变量,这个DIRS的变量中的参数就是模板的位置,所以项目启动时会加载这个文件中的所有html文件
url.py的代码不变,项目还是加载current_datetime视图函数
from untitled.views import current_datetime
from untitled.views import hours_ahead
from django.conf.urls import include, url
urlpatterns = [
url('time/', current_datetime),
url(r'^time/plus/\d{1,2}/$', hours_ahead),
]
然后是views.py,视图文件我们修改一下,让他使用模板
from django.http import HttpResponse
from django.template.loader import get_template
from django.template import Context
from django.shortcuts import render_to_response
import datetime
def current_datetime(request):
now = datetime.datetime.now()
t = get_template('current_datetime.html')
html = t.render({'current_date':now})
#html = t.render()
return HttpResponse(html)
#return render_to_response('current_datetime.html',{'current_date':now})
get_template()函数加载了current_datetime.html文件,然后返回视图到浏览器
这段视图函数代码也可以这么写:
def current_datetime(request):
now = datetime.datetime.now()
t = get_template('current_datetime.html')
return render_to_response('current_datetime.html',{'current_date':now})
render_to_response()函数封装了get_template()函数的功能。