Django的模板渲染(一)

简介: Django的模板渲染(一)

Django模板渲染

Djando模板渲染引擎,是一种可以让开发者把服务端数据填充到html网页中完成渲染效果的技术。它实现了把前端代码和服务端代码分离的作用,让项目中的业务逻辑代码和数据表现代码分离,让前端开发者和服务端开发者可以更好的完成协同开发。

在前后端不分离的Djang项目中,Django自带的模板渲染功能还是非常好用的,他能帮我们快速地成形一个网站

一 语法

模板渲染的官方文档

关于模板渲染你只需要记两种特殊符号(语法):

{{ }}和 {% %}

变量相关的用{{}},逻辑相关的用{%%}。

二 变量

在Django的模板语言中按此语法使用:{{ 变量名 }}。

当模版引擎遇到一个变量,它将计算这个变量,然后用结果替换掉它本身。 变量的命名包括任何字母数字以及下划线 (“_”)的组合。 变量名称中不能有空格或标点符号。

深度查询据点符(.)在模板语言中有特殊的含义。当模版系统遇到点(“.”),它将以这样的顺序查询:

字典查询(Dictionary lookup)

   属性或方法查询(Attribute or method lookup)

   数字索引查询(Numeric index lookup)

注意事项:

如果计算结果的值是可调用的,它将被无参数的调用。 调用的结果将成为模版的值。

如果使用的变量不存在, 模版系统将插入 string_if_invalid 选项的值, 它被默认设置为’’ (空字符串) 。

  几个例子:

view中代码:

模板中支持的写法:

 

注意我们直接在js代码中使用模板语法的时候,模板渲染的时候会有个转义的动作,将s = [‘哈哈’,‘xx’]这种数据中的元素的引号变为一个特殊符号:

案例:

首先定义路径,将视图模块导入

视图模块

from django.shortcuts import render

# Create your views here.

def home(request):
    name = "景浩"
    age = 18
    hobby = ['打游戏','上网','唱K']
    d1 = {"a":"b","c":"d"}

    class A(object):
        def __init__(self):
            self.username = '邵灵鸽'

        def hobby(self):
            return '张宇'


    a = A()
    dd = {
        'name':name,
        'age':age,
        'hobby':hobby,
        'd1':d1,
        'a': a
    }
    # 模板渲染完成之后, 才返回给浏览器, 浏览器再进行页面渲染, 生成效果
    return render(request,"index.html",dd)

index.html

浏览器访问,所有数据类型都渲染上了

如果想取hobby列表中的第一个数据,直接 变量.0 就可以

取字典中某建的值 字典变量.键

获取对象的属性 直接 对象.属性名

获取对象 方法额返回结果 对象.方法 方法不能加括号,所以不能调用有参数的方法

页面渲染原理

render: 将数据在模板中渲染并显示,使用方式为return render(request, template_path, {k:v})字典中key与value就是要向前端渲染出的数据。

前端页面通过变量,获取到后端的值

字符串替换完成之后,才交给浏览器

三 过滤器

Django的模板语言中,通过使用 过滤器 来改变变量的显示。

过滤器的语法: {{ value|filter_name:参数 }}

使用管道符"|"来应用过滤器。

例如:{{ name|lower }}会将name变量应用lower过滤器之后再显示它的值。lower在这里的作用是将文本全都变成小写。

注意事项:

过滤器支持“链式”操作。即一个过滤器的输出作为另一个过滤器的输入。

过滤器可以接受参数,例如:{{ sss|truncatewords:30 }},这将显示sss的前30个词。

过滤器参数包含空格的话,必须用引号包裹起来。比如使用逗号和空格去连接一个列表中的元素,如:{{ list|join:', ’ }}

'|'左右没有空格没有空格没有空格

Django的模板语言中提供了大约六十个内置过滤器。

default

如果一个变量是false或者为空,使用给定的默认值。 否则,使用变量的值。

{{ value|default:“nothing”}}

如果value没有传值或者值为空的话就显示nothing

显示个不存在的变量,设置默认值

length

返回值的长度,作用于字符串和列表。

{{ value|length }}

返回value的长度,如 value=[‘a’, ‘b’, ‘c’, ‘d’]的话,就显示4.

filesizeformat

将值格式化为一个 “人类可读的” 文件尺寸 (例如 ‘13 KB’, ‘4.1 MB’, ‘102 bytes’, 等等)。例如:

{{ value|filesizeformat }}

如果 value 是 123456789,输出将会是 117.7 MB。

slice

切片,如果 value=“hello world”,还有其他可切片的数据类型

{{value|slice:“2:-1”}}

切片遵循左开右闭

ss = 'wanli ai zhangyu'
<h3>{{ ss|slice:'0:5' }}</h3>

使用locals,在函数内使用locals,是打印调用之前的局部变量,返回的是字典

这样,就不用每个变量都要网dd字典中添加,方便测试

render传值时,字典中用的是什么键,前端用变量获取时,就必须用该键的变量

Django的模板渲染(二):https://developer.aliyun.com/article/1495689

相关文章
|
2月前
|
Java C++ Python
django 模板 过滤器
django 模板 过滤器
|
3月前
|
前端开发 JavaScript 数据库
python Django教程 之模板渲染、循环、条件判断、常用的标签、过滤器
python Django教程 之模板渲染、循环、条件判断、常用的标签、过滤器
|
3月前
|
JSON 数据处理 API
Django后端架构开发:视图与模板的正确使用
Django后端架构开发:视图与模板的正确使用
33 1
|
3月前
|
前端开发 Python
Django模板
【8月更文挑战第19天】
31 3
|
3月前
|
自然语言处理 前端开发 数据处理
Django的模板系统
【8月更文挑战第13天】
30 2
|
3月前
|
API Java 数据库连接
从平凡到卓越:Hibernate Criteria API 让你的数据库查询瞬间高大上,彻底告别复杂SQL!
【8月更文挑战第31天】构建复杂查询是数据库应用开发中的常见需求。Hibernate 的 Criteria API 以其强大和灵活的特点,允许开发者以面向对象的方式构建查询逻辑,同时具备 SQL 的表达力。本文将介绍 Criteria API 的基本用法并通过示例展示其实际应用。此 API 通过 API 构建查询条件而非直接编写查询语句,提高了代码的可读性和安全性。无论是简单的条件过滤还是复杂的分页和连接查询,Criteria API 均能胜任,有助于提升开发效率和应用的健壮性。
123 0
|
3月前
|
前端开发 数据处理 开发者
解锁Django模板系统终极奥义!揭秘高效前端渲染秘籍,让你的网站秒变炫酷黑科技!
【8月更文挑战第31天】Django作为Python的高级Web框架,内置的模板系统支持动态HTML渲染。本文通过在线书店案例,详细介绍Django模板系统的设置与高效渲染技巧,包括创建模板文件、编写视图函数及URL配置。通过合理使用过滤器、深度查询和模板继承等技巧,提升前端渲染效率和安全性,优化Web应用开发流程。
26 0
|
3月前
|
安全 JavaScript 前端开发
Django入门到放弃之模板及标签
Django入门到放弃之模板及标签
|
5月前
|
缓存 运维 Serverless
Serverless 应用引擎产品使用合集之基于django应用模板创建的FC,如何配置数据库
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
5月前
|
Python
Django——模板
Django——模板
下一篇
无影云桌面