我的编程空间,编程开发者的网络收藏夹
学习永远不晚

django模板系统(上)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

django模板系统(上)

filters    过滤
default    替代作用
filesizeformat    格式化为人类可读
add    给变量加参数
lower    小写
upper    大写
title    标题
ljust    左对齐
rjust    右对齐
center    居中
length    返回value的长度
slice    切片
first    取第一个元素
last    取最后一个元素
join  字符串拼接
truncatechars    截断
date    日期格式化
safe    标签转义
自定义filter
Tags
for    for循环可用的一些参数
for ... empty
if ,elif 和 else
with    定义一个中间变量
csrf_token

常用语法

Django模板中只需要记两种特殊符号

{{  }} 和 {%  %}

{{  }} 表示变量,在模板渲染的时候替换成值,{%  %} 表示逻辑相关的操作

变量

{{ 变量名 }}

变量名由字母数字和下划线组成。

点(.)在模板中有特殊的含义,用来获取对象的响应属性值。

view中代码:

def template_test(request):
    l = [11, 22, 33]
    d = {"name": "alex"}

    class Person(object):
        def __init__(self, name, age):
            self.name = name
            self.age = age

        def dream(self):
            return "{} is dream...".format(self.name)

    Alex = Person(name="Alex", age=34)
    Egon = Person(name="Egon", age=9000)
    Eva_J = Person(name="Eva_J", age=18)

    person_list = [Alex, Egon, Eva_J]
    return render(request, "template_test.html", {"l": l, "d": d, "person_list": person_list})
View Code

模板中支持的写法:

{# 取l中的第一个参数 #}
{{ l.0 }}
{# 取字典中key的值 #}
{{ d.name }}
{# 取对象的name属性 #}
{{ person_list.0.name }}
{# .操作只能调用不带参数的方法 #}
{{ person_list.0.dream }}

注:当模板系统遇到一个(.)时,会按照如下的顺序去查询:

  1.  在字典中查询

  2.  属性或者方法

  3.  数字索引

 

Filters

翻译为过滤器,用来修改变量的显示结果

语法:{{ value|filter_name:参数 }}

“ | 左右没有空格!没有空格!!”

default

{{ value|default:"nothing" }}

如果value值没传的话就显示nothing

注:TEMPLATES的OPTIONS可以增加一个选项:string_if_invalid:'找不到',可以替代default的作用。

filesizeformat

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

{{ value|filesizeformat }}

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

add

给变量加参数

{{ value|add:"2" }}

value是数字4,则输出结果为6.

{{ first|add:second }}

如果first是【1,2,3】,second【4,5,6】,那输出结果是【1,2,3,4,5,6】。

lower

小写

{{ value|lower }}

upper

大写

{{ value|upper }}

title

标题

{{value|title}}

ljust

左对齐

"{{value|ljust:"10"}}"

rjust

右对齐

"{{value|rjust:"10"}}"

center

居中

"{{value|center:"15"}}"

length

{{ value|length }}

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

slice

切片

{{value|slice:"2:-1"}}

first

取第一个元素

{{value|first}}

last

取最后一个元素

{{value|last}}

join

使用字符串拼接列表。同python的str.join(list)。

{{value|join:" // "}}

truncatechars

如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“.......”)结尾

参数:截断的字符数

{{value|truncatechars:9}}

date

日期格式化

{{value|date:"Y-m-d H:i:s"}}

个可视化输出的字符:点击查看

safe

Django的模板中会对HTML标签和JS等语法标签进行转义,原因显而易见,这样是为了安全。但是有的时候我们可能不希望这些HTML元素被转义,比如我们做一个内容管理系统,后台添加的文章中是经过修饰的,这些修饰可能是通过一个类似于FCKeditor编辑加注了HTML修饰符的文本,如果自动转义的话显示的就是保护HTML标签的源文件。为了在django中关闭HTML的自动转义有两种方式,如果是一个单独的变量我们可以通过过滤器“|safe”的方式告诉django这段代码是安全的不必转义。

比如:

value="<a href='#'>点我</a>"

{{value|safe}}

 

自定义filter

自定义过滤器只是带有一个或两个参数的python函数:

  * 变量(输入)的值 --- 不一定是一个字符串

  * 参数的值 --- 这可以有一个默认值,或完全省略

例如,在过滤器{{ var|foo: 'bar' }} 中,过滤器foo将传递变量var和参数“bar

自定义filter代码文件摆放位置:

app01/
    __init__.py
    models.py
    templatetags/  # 在app01下面新建一个package package
        __init__.py
        app01_filters.py  # 建一个存放自定义filter的py文件
    views.py

编写自定义filter

from django import template
register = template.Library()


@register.filter
def fill(value, arg):
    return value.replace(" ", arg)


@register.filter(name="addSB")
def add_sb(value):
    return "{} SB".format(value)

使用自定义filter

{# 先导入我们自定义filter那个文件 #}
{% load app01_filters %}

{# 使用我们自定义的filter #}
{{ somevariable|fill:"__" }}
{{ d.name|addSB }}

 

Tags

for

<ul>
{% for user in user_list %}
    <li>{{ user.name }}</li>
{% endfor %}
</ul>

for循环可用的一些参数:

Variable Description
for loop.counter 当前循环的索引值(从1开始)
foo loop.counter 0 当前循环的索引值(从0开始)
for loop.revcounter 当前循环的倒序索引值(从1开始)
for loop.revcounter 0 当前循环的倒序索引值(从0开始)
for loop.first 当前循环是不是第一次循环(布尔值)
for loop.last 当前循环是不是最后一次循环(布尔值)
for loop.parentloop 本层循环的外层循环

for ... empty

<ul>
{% for user in user_list %}
    <li>{{ user.name }}</li>
{% empty %}
    <li>空空如也</li>
{% endfor %}
</ul>

if,elif 和 else

{% if user_list %}
  用户人数:{{ user_list|length }}
{% elif black_list %}
  黑名单数:{{ black_list|length }}
{% else %}
  没有用户
{% endif %}

当然也可以只有if 和 else

{% if user_list|length > 5 %}
  七座豪华SUV
{% else %}
    黄包车
{% endif %}

if语句支持and,or,==,>,<,!=,<=,>=,in,not in,is,is not 判断

with

定义一个中间变量

{% with total=business.employees.count %}
    {{ total }} employee{{ total|pluralize }}
{% endwith %}

 

csrf_token

这个标签用于跨站请求伪造保护

在页面的from表单里面写上{% csrf_token %}

注释

# ... #

注意事项

1.Django的模板语言不支持连续判断,即不支持以下写法

{% if a >b >c %}
  ...
{% endif %}

2. Django的模板语言中属性的优先级大于方法

def xx(request):
    d = {"a":1,"b":2,"c":3,"items":"100"}
    return render(request,"xx.html",{"data":d})

如上,我们在使用render方法渲染一个页面的时候,传的字典d有一个key是items并且还有默认的d.items()方法,此时在模板语言中:

{{data.items}}

默认会取d的items key的值

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

django模板系统(上)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

django模板系统(上)

filters 过滤default 替代作用filesizeformat 格式化为人类可读add 给变量加参数lower 小写upper 大写title 标题ljust 左对齐rjust
2023-01-30

Django之模板系统

一 语法   模板渲染的官方文档    关于模板渲染你只需要记两种特殊符号(语法):  {{  }}和 {% %}  变量相关的用{{}},逻辑相关的用{%%}。  二 变量    在Django的模板语言中按此语法使用:{{ 变量名 }}
2023-01-30

Django的模板系统

一.语法  关于模板渲染只需要记住两种特殊符号(语法):  {{ }} 和 {% %}  (变量相关用{{ }}  逻辑相关用{% %})二.变量  在Django的模板语言中按照{{ 变量名 }}来使用.  当模板引擎遇到一个变量,它将计
2023-01-30

Python中Django模板系统的示例分析

这篇文章主要为大家展示了“Python中Django模板系统的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python中Django模板系统的示例分析”这篇文章吧。设置模板路径在dja
2023-06-25

Django模板层

一.模板语言的变量views.pydef index(request): #模板语言的变量 name = 'Yven' addr = False age = 180 li = [1,2,3,4,['a','b'
2023-01-30

django-7-django模型系统

<<<常用的模型字段类型>>>https://docs.djangoproject.com/en/2.1/ref/models/fields/#field-types InterField CharFiled TestFiled DateF
2023-01-31

django-4-模板标签,模板继承

<<<模板标签>>>{% for %}{% endfor %} 循环{% if %}{% elif %}{% else %}{% endif %} 判断 {% url 'app:name' 参数 %}调用name视图函数 {% with s
2023-01-30

Django之模板层

在一个项目里面有一个专门放模板的文件夹Templates,有一个专门放视图的文件views,而且我们大多给浏览器响应的都应该是一个完整的页面,也就是读取的是一个HTML文件,然后再返回给浏览器。但我们在写HTML文件时,里面关于要从数据库拿
2023-01-30

Django-2- 模板路径查找,模板变

模板路径查找路径配置2. templates模板查找有两种方式  2.1 - 在APP目录下创建templates文件夹,在文件夹下创建模板   2.2 - 在项目根目录下创建templates文件夹,在文件夹里面创建与APP同名的文件夹,
2023-01-30

django模板之的html模板中调用对

环境:依赖最初test2数据库           python3版本           多python版本环境进入,python3虚拟环境,新建项目test4:]# cd py3/django-test1/]# django-admin
2023-01-31

django-模板层基础2

1、模板的导入 {% include 模板名%} 首先在你的的项目中,需要很多地方用到同一个组件(相对于头部,你进行每个页面的切换,网页最上面的头  部不需要改变),那么这样我们可以把那个头部重新写在一个模板中,其他每个页面需要
2023-01-30

Django模板引擎有几种

这篇文章将为大家详细讲解有关Django模板引擎有几种,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在Django框架中,可以使用两种模板引擎,一种是默认的Django模板引擎,还有一种是Jinja2模板
2023-06-02

Django如何使用jinja2模板

这篇“Django如何使用jinja2模板”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Django如何使用jinja2模板
2023-07-05

客户管理系统excel模板

什么是客户管理系统Excel模板?客户管理系统Excel模板是一种基于MicrosoftExcel的应用程序,旨在帮助企业管理客户信息、跟踪销售活动并优化客户关系。通过使用该模板,企业可以更好地了解客户需求、提高销售业绩并提升客户满意度。为什么需要客户管理系统Excel模板?在现代社会中,客户管理变得越来越重要。一个优
客户管理系统excel模板
2024-01-17

Django 笔记(四)模板标签 ~ 自

模板标签:标签在渲染的过程中提供任意的逻辑语法: 由{% ... %} 和 {% end... %} 常用标签:   with:类似取别名  模版继承:Django模版引擎中最强大也是最复杂的部分就是模版继承了。 模版继承可以让你创建一个基
2023-01-30

Django模板语言与视图(view)

常用语法   {{  }}和{% %}   变量相关的用{{}} , 逻辑相关的用{% %}   变量   在Django的模板语言中按此语法使用:{{ 变量名 }}。 当模版引擎遇到一个变量,它将计算这个变量,然后用结果替换掉它本身。 变
2023-01-30

python Django模板的使用方法

模板是一个文本,用于分离文档的表现形式和内容。 模板定义了占位符以及各种用于规范文档该如何显示的各部分基本逻辑(模板标签)。 模板通常用于产生HTML,但是Django的模板也能产生任何基于文本格式的文档。 来一个项目说明 1、建立MyDj
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录