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)
#在render_to_string里传入DTL格式的文件即可
2)快捷方式(最常用的方式)
- Django在django.shortcuts模块里,提供了很多宽街集成方法,方便代码的书写
- render就是直接完成生成字符串打包成HttpResponse的封装
def book_index(request):
return render(request,'book.html')
#render里必须先传入request对象,他在渲染文件时可以把用户请求的信息也传入模板中
'''
render(request,'模板文件的路径',context={字典}) #渲染模板
context上下文,值的类型要求必须为字典,将字典中的数据渲染到模板文件中,通过字典的键key取得对应的value
'''