1、前言
视图函数只是直接返回文本,而在实际生产环境中其实很少这样用,因为实际的页面大多是带有样式和HTML代码,这可以让浏览器渲染出非常漂亮的页面。 目前市面上有非常多的模板系统,其中最知名最好用的就是DTL和Jinja2。 DTL是 Django Template Language 三个单词的缩写,也就是Django自带的模板语言 当然也可以配置Django支持Jinja2等其他模板引擎,但是作为Django内置的模板语言,和Django可以达到无缝衔接而不会产生一些不兼容的情况,因此建议使用DTL
2、模板和HTML的区别
DTL模板是一种带有特殊语法的HTML文件,这个文件可以被Django编译,可以传递参数进去,实现数据动态化。在编译完成后,生成一个普通的HTML文件,然后发送给客户端 当然Django也可以直接渲染普通的HTML文件,只是这样的话,就和静态网站没有什么区别了。
3、模板渲染的方式
1)原始方法
Django在django.template.loader模块下提供了render_to_string方法专门进行DTL语言的文件转换成字符串类型功能
from django. http import HttpResponse
from django. template. loader import render_to_string
def book_index ( request) :
data = render_to_string( 'book.html' )
return HttpResponse( data)
2)快捷方式(最常用的方式)
Django在django.shortcuts模块里,提供了很多宽街集成方法,方便代码的书写 render就是直接完成生成字符串打包成HttpResponse的封装
def book_index ( request) :
return render( request, 'book.html' )
'''
render(request,'模板文件的路径',context={字典}) #渲染模板
context上下文,值的类型要求必须为字典,将字典中的数据渲染到模板文件中,通过字典的键key取得对应的value
'''