二.模板的加载与响应方式
那么我们如何加载模板并响应给浏览器呢?
方法一:通过 loader 获取模板,通过 HttpResponse 进行响应
from django.http import HttpResponse from django.template import loader # 1.通过loader加载模板 t = loader.get_template("模板文件名") # 2.将t转换成HTML字符串 html = t.render(字典数据) # 3.用响应对象将转换的字符串内容返回给浏览器 return HttpResponse(html)
方法二:使用 render 方法直接加载并响应模板
from django.shortcuts import render return render(request,'模板文件名', 字典数据)
下面我们对上述两种方式分别来说明:
#方式一 from django.http import HttpResponse from django.template import loader # 导入loader方法 from django.shortcuts import render #导入render 方法 def test_html(request): t=loader.get_template('test.html') html=t.render({'name':'乔治老师真厉害'}) #以字典形式传递数据并生成html return HttpResponse(html) # 以 HttpResponse方式响应html
#方式二 from django.shortcuts import render #导入reder方法 def test_html(request): return render(request,'test.html',{'name':'乔治老师真厉害'}) #根据字典数据生成动态模板
示例:
templates 目录下创建 test.html 文件并在其中添加如下代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <p style="font-size:50px;color:green"> {{name}} </p> </body> </html>
提示:{{name}} 属于django模板语言的语法,代表一个变量
在 BookStore/urls.py 文件的 urlpatterns 列表中为视图函数 test_html() 配置路由映射关系。
如下所示:
from django.contrib import admin from django.urls import path from Bookstore import views # 这句代码自己加 urlpatterns = [ path('admin/', admin.site.urls), path('test/', views.test_html) ]
最后在urls.py文件同级目录创建一个views.py文件,添加如下代码:
# 方式一 from django.template import loader # 导入loader方法 from django.shortcuts import render # 导入render 方法 from django.http import HttpResponse def test_html(request): t = loader.get_template('test.html') html = t.render({'name': '乔治老师真厉害'}) # 以字典形式传递数据并生成html return HttpResponse(html) # 以 HttpResponse方式响应html
从上述过程我们不难体会 Django 视图函数的实现流程。
首先在 templates 文件夹中新建了 test.html 文件,使用它作为模板文件;
然后我们配置了视图函数的路由映射关系;
最后定义了视图函数 test_html()。
三.render方法详解
renbder 方法的作用是结合一个给定的模板和一个给定的字典,并返回一个渲染后的 HttpResponse 对象。通俗的讲就是把字典格式的内容,加载进 templates 目录中定义的 HTML 文件,最终通过浏览器渲染呈现。
rebder() 方法的完整参数格式如下所示:
render(request, template_name, context=None, content_type=None, status=None, using=None)
以下每个参数的含义如下所示:
request: 是一个固定参数,用于生成响应的请求对象
template_name: templates 中定义的文件, 要注意路径名。比如 "templates\appname\index.html", 参数就要写"appname\index.html"
context: 要传入文件中用于渲染呈现的数据, 默认是字典格式;
content_type: 生成的文档要使用的媒体格式类型。默认为 DEFAULT_CONTENT_TYPE 设置的值;
status: http 的响应代码,默认是 200;
using: 用于加载模板使用的模板引擎的名称。
今天的分享到这里就结束了,感谢各位大大的观看,各位大大的三连是博主更新的动力,感谢谢谢谢谢谢谢谢谢各位的支持!!!!!