python-django模板系统

[TOC]

概述

django中的模板是 HTML代码+逻辑控制代码(特殊标记),注意 模板 不是 单纯的HTML页面

作用:
把后端的变量 嵌入到HTML中渲染后,返回给浏览器来达到前后端代码分离,页面动态显示的目的;

不要将HTML代码嵌套在视图函数里

直接把HTML页面嵌套在视图函数里返回给浏览器并不是好方法,原因:

  1. 对页面进行任何改变都必须对 Python 代码进行修改;
  2. 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代码