Django模板加载与响应2

简介: Django模板加载与响应2

二.模板的加载与响应方式

那么我们如何加载模板并响应给浏览器呢?

方法一:通过 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: 用于加载模板使用的模板引擎的名称。

今天的分享到这里就结束了,感谢各位大大的观看,各位大大的三连是博主更新的动力,感谢谢谢谢谢谢谢谢谢各位的支持!!!!!

目录
相关文章
|
3月前
|
SQL 前端开发 JavaScript
Python 教程之 Django(10)模板
Python 教程之 Django(10)模板
35 0
|
5月前
|
索引 Python
19 Django模板 - 定义模板
19 Django模板 - 定义模板
17 0
|
5月前
|
Python
18 Django模板 - 介绍
18 Django模板 - 介绍
26 0
|
13天前
|
开发者 Python
Django模板系统的强大之处:动态渲染与扩展性
【4月更文挑战第15天】Django模板系统是Web开发中的强大工具,支持动态渲染和扩展性。动态渲染包括变量、标签和过滤器的使用,实现内容根据上下文数据动态生成。模板继承和自定义标签则提升了扩展性,减少代码重复,增强可维护性。通过这些特性,Django模板系统助力开发者构建高效、动态的Web应用。
|
3月前
|
前端开发 JavaScript Python
Django 模板中使用 Ajax POST
Django 模板中使用 Ajax POST
17 0
|
4月前
|
前端开发 JavaScript 数据库
Python 教程之 Django(10)模板
Python 教程之 Django(10)模板
38 0
|
5月前
|
Ubuntu Python
23 Django模板 - 验证码案例
23 Django模板 - 验证码案例
31 0
|
5月前
|
安全 JavaScript 前端开发
22 Django模板 - csrf
22 Django模板 - csrf
26 0
|
5月前
|
JavaScript Python
21 Django模板 - HTML转义
21 Django模板 - HTML转义
45 0
|
5月前
|
数据安全/隐私保护 Python
20 Django模板 - 模板继承
20 Django模板 - 模板继承
41 0