python-django模板系统 作者:马育民 • 2019-03-02 09:34 • 阅读:10022 [TOC] # 概述 django中的模板是 **HTML代码**+**逻辑控制代码(特殊标记)**,注意 **模板** 不是 单纯的HTML页面 **作用:** 把后端的变量 嵌入到HTML中渲染后,返回给浏览器来达到前后端代码分离,页面动态显示的目的; ### 不要将HTML代码嵌套在视图函数里 直接把HTML页面嵌套在视图函数里返回给浏览器并不是好方法,原因: 1. 对页面进行任何改变都必须对 Python 代码进行修改; 2. Python 代码编写和 HTML 设计是两项不同的工作,前端开发和后端开发无非 并行;(在开发时,由前端程序员编写页面,后台程序员编写python代码) 所以,将HTML页面的设计和后端逻辑设计分离,会**更简洁**、**容易维护开发** WEB应用。 之后会讲解 Django的 模板系统 (Template System),来实现前后台分离 # 创建模板目录 在manage.py同级目录下,创建文件夹```templates```,在templates文件夹下创建与应用同名的文件夹,即```blog```文件夹,如下截图: [![](http://www.malaoshi.top/upload/0/0/1EF2tdoMTrw0.png)](http://www.malaoshi.top/upload/0/0/1EF2tdoMTrw0.png) # 在settings.py文件配置模板目录 上面的模板目录是我们自定义的,所以django框架不知道,我们要将模板目录告诉django框架,打开settings.py文件,找到如下代码: [![](http://www.malaoshi.top/upload/0/0/1EF2te7g1864.png)](http://www.malaoshi.top/upload/0/0/1EF2te7g1864.png) 红框处的```DIRS```就是要配置的位置,修改如下: ``` 'DIRS': [os.path.join(BASE_DIR,'templates')], ``` # 创建最简单的模板 在```templates/blog```文件夹下创建index.html页面,在该html中写最简单的内容 ``` Document hello world(使用模板) ``` # 配置视图 模板定义好,浏览器是无法直接访问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/ ,截图如下: [![](http://www.malaoshi.top/upload/0/0/1EF2teDmryX7.png)](http://www.malaoshi.top/upload/0/0/1EF2teDmryX7.png) 查看控制台打印的内容,截图如下: [![](http://www.malaoshi.top/upload/0/0/1EF2teEmR6yA.png)](http://www.malaoshi.top/upload/0/0/1EF2teEmR6yA.png) 视图函数中的代码```print(temp.render())```,将模板中的html代码打印到控制台中,也就是说```temp.render()```方法返回的是模板的html代码 原文出处:http://malaoshi.top/show_1EF2tFmAeWCO.html