Django进阶之模板变量渲染

模板是django框架的重要组成部分,而变量是如何渲染在模板中是框架使用的基础。

目录

模板概述

定义模板

渲染变量

路由

视图

模板

渲染对象属性

路由

视图

模板

渲染对象方法

模型

模板

总结


模板概述

模板包含静态的HTML和用于描述如何动态生成HTML的特殊语法两个部分。

一个Django工程可以配置一个或者多个模板引擎。

Django自带的模板系统叫作Django Template Language(DTL),通过引擎可以方便地加载模板文件并在内存中进行编译,然后插入动态数据,最后返回一个字符串。

模板的结构和HTML文件非常相似,甚至完全可以使用一个HTML文件作为模板。

定义模板

变量:视图传递给模板的数据;要遵守标识符规则

语法:{{val}}

注意:如果使用的变量不存在,则插入为空字符串

渲染变量

通过设置路由和视图展示模板来演示。

路由

path('template1', views.template1, name='template1'),

视图

定义一个视图方法,渲染到模板中,并传递一个变量给模板。

def template1(request):

    return render(request, 'test/index.html', {'title': '这是模板变量'})

模板

简单的在模板中渲染一下视图传递的title变量

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>模板</title>
</head>
<body>
    <h2>{{title}}</h2>
</body>
</html>

渲染对象属性

有时候业务中需要把一些复杂的变量进行渲染,比如对象或者列表类型的。

可以使用以下方式进行传递和渲染。

路由

path('template2', views.template2),

视图

视图传递给模板设定好的数据

def template2(request):
    grades = Grades.objects.get(pk=1)
    testlist = ['This', 'is', 'an', 'example', 'template']
    return render(request, 'test/index.html', {
        'title': 'This is an example template',
        'info': grades,
        'testlist': testlist,
   })

模板

在模板中使用点语法来进行调用和渲染。当做字典查询、属性或者方法、数字索引使用。

<h2>{{title}}</h2>
<ul>
    <li>{{info.name}}</li>
    <li>{{info.boy_num}}</li>
    <li>{{testlist.0}}</li>
    <li>{{testlist.1}}</li>
</ul>

渲染对象方法

有时候需要在模板中调用对象的方法来渲染。

模型

定义模型方法获取班级名称

class Grades(models.Model):
    """ 班级表模型 """

    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=20)
    boy_num = models.IntegerField()
    girl_num = models.IntegerField()
    create_time = models.DateTimeField()

    def get_name(self):

        return self.name

模板

模板中调用模型对象方法,还是使用点语法。

<h2>{{title}}</h2>
<ul>
    <li>{{info.name}}</li>
    <li>{{info.boy_num}}</li>
    <li>{{info.get_name}}</li>
</ul>

注意:在模板中无法传递参数。

总结

视图处理数据传递给模板,模板解析变量使用两个花括号和字段名称,直接解析或者使用点语法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JSON_L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值