[TOC]
概述
django中的模板是 HTML代码+逻辑控制代码(特殊标记),注意 模板 不是 单纯的HTML页面
作用:
把后端的变量 嵌入到HTML中渲染后,返回给浏览器来达到前后端代码分离,页面动态显示的目的;
不要将HTML代码嵌套在视图函数里
直接把HTML页面嵌套在视图函数里返回给浏览器并不是好方法,原因:
- 对页面进行任何改变都必须对 Python 代码进行修改;
- Python 代码编写和 HTML 设计是两项不同的工作,前端开发和后端开发无非 并行;(在开发时,由前端程序员编写页面,后台程序员编写python代码)
所以,将HTML页面的设计和后端逻辑设计分离,会更简洁、容易维护开发 WEB应用。 之后会讲解 Django的 模板系统 (Template System),来实现前后台分离
创建模板目录
在manage.py同级目录下,创建文件夹templates,在templates文件夹下创建与应用同名的文件夹,即blog文件夹,如下截图:
在settings.py文件配置模板目录
上面的模板目录是我们自定义的,所以django框架不知道,我们要将模板目录告诉django框架,打开settings.py文件,找到如下代码:
红框处的DIRS就是要配置的位置,修改如下:
'DIRS': [os.path.join(BASE_DIR,'templates')],
创建最简单的模板
在templates/blog文件夹下创建index.html页面,在该html中写最简单的内容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
hello world(使用模板)
</body>
</html>
配置视图
模板定义好,浏览器是无法直接访问html模板文件的,需要配置视图,由视图加载模板,并将html代码返回给浏览器
上面的代码有些复杂,更简单的写法如下:
from django.shortcuts import render
def index(request):
#下面的代码是更高级的封装,使用更简单
return render(request,'blog/index.html')
另一种写法(不推荐)
修改blog/views.py文件,修改视图函数:
from django.http import *
from django.template import loader
def index(request):
#加载模板,要指定模板的位置
temp=loader.get_template('blog/index.html')
#打印该函数的返回值
print(temp.render())
return HttpResponse(temp.render())
浏览器访问测试
打开浏览器,访问http://localhost:8000/ ,截图如下:
视图函数中的代码print(temp.render()),将模板中的html代码打印到控制台中,也就是说temp.render()方法返回的是模板的html代码
