iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >django模板系统(上)
  • 139
分享到

django模板系统(上)

模板系统django 2023-01-30 22:01:16 139人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

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

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的值

 

--结束END--

本文标题: django模板系统(上)

本文链接: https://www.lsjlt.com/news/179929.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • django模板系统(上)
    filters 过滤 default 替代作用 filesizeformat 格式化为人类可读 add 给变量加参数 lower 小写 upper 大写 title 标题 ljust 左对...
    99+
    2023-01-30
    模板 系统 django
  • Django之模板系统
    一 语法     模板渲染的官方文档      关于模板渲染你只需要记两种特殊符号(语法):   {{  }}和 {% %}   变量相关的用{{}},逻辑相关的用{%%}。     二 变量      在Django的模板语...
    99+
    2023-01-30
    模板 系统 Django
  • Django的模板系统
    一.语法   关于模板渲染只需要记住两种特殊符号(语法):   {{ }} 和 {% %}  (变量相关用{{ }}  逻辑相关用{% %}) 二.变量   在Django的模板语言中按照{{ 变量名 }}来使用.   当模板引擎遇到一个...
    99+
    2023-01-30
    模板 系统 Django
  • Python Django模板系统详解
    目录设置模板路径模板变量引用静态文件总结设置模板路径 在django项目下创建templats文件来存放html文件 为了减少模板加载调用过程及模板本身的冗余代码,Django ...
    99+
    2024-04-02
  • Python中Django模板系统的示例分析
    这篇文章主要为大家展示了“Python中Django模板系统的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python中Django模板系统的示例分析”这篇文章吧。设置模板路径在dja...
    99+
    2023-06-25
  • django-7-django模型系统
    <<<常用的模型字段类型>>>https://docs.djangoproject.com/en/2.1/ref/models/fields/#field-types  InterField Char...
    99+
    2023-01-31
    模型 系统 django
  • Django模板系统的工作原理是什么
    Django模板系统的工作原理是将模板和数据结合在一起,生成最终的HTML页面。当一个请求到达Django应用程序时,Django会...
    99+
    2024-04-02
  • Django模板层
    一.模板语言的变量 views.py def index(request): #模板语言的变量 name = 'Yven' addr = False age = 180 li = [1,2,3,4,...
    99+
    2023-01-30
    模板 Django
  • Django之模板层
      在一个项目里面有一个专门放模板的文件夹Templates,有一个专门放视图的文件views,而且我们大多给浏览器响应的都应该是一个完整的页面,也就是读取的是一个HTML文件,然后再返回给浏览器。但我们在写HTML文件时,里面关于要从数...
    99+
    2023-01-30
    模板 Django
  • django-4-模板标签,模板继承
    <<<模板标签>>> {% for %}{% endfor %} 循环 {% if %}{% elif %}{% else %}{% endif %} 判断 {% url 'app:name' 参数 ...
    99+
    2023-01-30
    模板 标签 django
  • Django-2- 模板路径查找,模板变
    模板路径查找 路径配置 2. templates模板查找有两种方式   2.1 - 在APP目录下创建templates文件夹,在文件夹下创建模板     2.2 - 在项目根目录下创建templates文件夹,在文件夹里面...
    99+
    2023-01-30
    模板 路径 Django
  • django模板之的html模板中调用对
    环境:依赖最初test2数据库           python3版本           多python版本环境进入,python3虚拟环境,新建项目test4:]# cd py3/django-test1/ ]# django-admi...
    99+
    2023-01-31
    模板 django html
  • django-模板层基础2
    1、模板的导入 {% include 模板名%} 首先在你的的项目中,需要很多地方用到同一个组件(相对于头部,你进行每个页面的切换,网页最上面的头  部不需要改变),那么这样我们可以把那个头部重新写在一个模板中,其他每个...
    99+
    2023-01-30
    模板 基础 django
  • 客户管理系统excel模板
    什么是客户管理系统Excel模板? 客户管理系统Excel模板是一种基于MicrosoftExcel的应用程序,旨在帮助企业管理客户信息、跟踪销售活动并优化客户关系。通过使用该模板,企业可以更好地了解客户需求、提高销售业绩并提升客户满意度。...
    99+
    2024-01-17
    客户管理系统 模板 excel
  • Django如何使用jinja2模板
    这篇“Django如何使用jinja2模板”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Django如何使用jinja2模板...
    99+
    2023-07-05
  • Django模板引擎有几种
    这篇文章将为大家详细讲解有关Django模板引擎有几种,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在Django框架中,可以使用两种模板引擎,一种是默认的Django模板引擎,还有一种是Jinja2模板...
    99+
    2023-06-02
  • Django模板继承与模板的导入实例详解
    目录一:模版的继承1.什么是模板继承2.使用继承流程原理3.模板继承语法二:模板的继承使用1.案例需求2.总结模板继承三:模版的导入1.模板导入2.模板导入格式3.模板导入使用4.使...
    99+
    2024-04-02
  • Django框架模板用法详解
    目录一、模板应用实例二、Django 模板标签1、变量2、列表3、字典4、过滤器5、if/else 标签6、for 标签7、ifequal/ifnotequal 标签8、注释标签9、...
    99+
    2024-04-02
  • Django使用jinja2模板的实现
    目录jinja2介绍安装jinja2模块Django配置jinja2jinja2自定义过滤器CSRFCSRF攻击示意图防止 CSRF 攻击在 Django项目中解决 CSRF 攻击j...
    99+
    2023-02-23
    Django jinja2模板 Django jinja2
  • Django 笔记(四)模板标签 ~ 自
    模板标签: 标签在渲染的过程中提供任意的逻辑 语法: 由{% ... %} 和 {% end... %}   常用标签:      with:类似取别名     模版继承: Django模版引擎中最强大也是最复杂的部分就是模版继...
    99+
    2023-01-30
    模板 标签 笔记
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作