Django 模板函数

在模板中的函数是只需要函数名,不用加括号,自动执行

在前端中的函数

不用加括号,函数自动执行

前端

{% for item in userinfo.keys %}
<h3>{{ item }}</h3>
{% endfor %} {% for item in userinfo.values %}
<h3>{{ item }}</h3>
{% endfor %} {% for k,v in userinfo.items %}
<h3>{{ k }}-{{ v }}</h3>
{% endfor %}

后台,

后台发送的是字典

def test(request):
return render(request,'test.html',{
'userinfo':{'k1':'v1','k2':'v2'}
})

转换大写

{{ name|upper }}  {# 大写 #}

本质是调用的Python的函数

@register.filter(is_safe=False)
@stringfilter
def upper(value):
"""Converts a string into all uppercase."""
return value.upper()

模板中自定义函数

实现步骤:

  • 1、在任意APP中创建templatetags模块

  • 2、在模块中穿件任意的py文件,如xx.py

  • 3、一定要写register = template.Library()

  • 4、在html中写load xx

simple_filter

filter只能传递2个参数

可以用作条件判断,复杂的条件判断直接在simple_tag的函数中写

from django import template

register = template.Library()

@register.filter()  # 使用这个装饰器
def my_upper(value):
return value.upper()
{% load xx %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{{ name|my_upper }}
</body>
</html>

接收多个参数

@register.filter()
def my_upper(value,arg):
return value+arg
{{ name|my_upper:"12456" }} 后面用冒号传递,不能用空格

simple_tag

  • 反向生成URL就是用的simple_tag

simple_tag能传递多个参数,

引入的方式是和filter不同的e

from django import template

register = template.Library()

@register.simple_tag()
def my_lower(value):
return value.lower()
{% load xx %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% my_lower "aABDJ" %}
</body>
</html>

多个参数

@register.simple_tag()
def my_add(value,a1,a2,a3):
return value+a1+a2+a3
{% my_add "he" "llo" "wo" "rld" %}

总结:

- simple_filter
- 最多两个参数,方式: {{第一个参数|函数名称:"第二个参数"}}
- 可以做条件判断
- simple_tag
- 无限制: {% 函数名 参数 参数%}

include 组件

{% include 'pub.html' %}

Django 模板函数的更多相关文章

  1. 【python】Django自定义模板函数

    参考:https://blog.csdn.net/wenyuanhai/article/details/73656761 注意: 1.自定义模板函数的路径必须为APP的templatetags下:ap ...

  2. JavaScript中作用域回顾(避免使用全局变量)(瀑布流的实现)(scroll事件)以及Django自定义模板函数回顾

    页面显示照片样式为瀑布流: 上面的div个数可以按照自己安排进行划分.img的分布可以使用模板标签以及自定义模板函数进行排布: 自定义模板函数实现可以看,最后几列:python---django中模板 ...

  3. Django自定义模板函数

    Django自定义模板函数 https://www.cnblogs.com/SunsetSunrise/p/7680491.html 在django中新建一个应用:listpage在listpage中 ...

  4. 在 Django 模板中遍历复杂数据结构的关键是句点字符

    在 Django 模板中遍历复杂数据结构的关键是句点字符 ( . ). 实例二 mysit/templates/myhtml2.html修改如下 <!DOCTYPE html> <h ...

  5. python django 模板

    1 用两个大括号括起来的文字{{person_name}} 称为变量 2 被 大括号和面分号包围的文件({% if ordered_warranty %})是模板标签 3 过滤器是用管道符(|) 和U ...

  6. Django模板-分离的模板

    上一篇Django模板-在视图中使用模板最后的问题,我们需要把数据和展现分离开. 你可能首先考虑把模板保存在文件系统的某个位置并用 Python 内建的文件操作函数来读取文件内容. 假设文件保存在 E ...

  7. 关于Django模板引擎的研究

    原创博文,转载请注明出处. 以前曾遇到过错误Reverse for ‘*’ with arguments '()' and keyword arguments' not found.1其原因是没有给视 ...

  8. Django模板引擎的研究

    Django模板引擎的研究 原创博文,转载请注明出处. 以前曾遇到过错误Reverse for ‘*’ with arguments '()' and keyword arguments' not f ...

  9. django模板系统基础

    模板系统基础Django模板是一个string文本,它用来分离一个文档的展现和数据 模板定义了placeholder和表示多种逻辑的tags来规定文档如何展现 通常模板用来输出HTML,但是Djang ...

随机推荐

  1. MyCat - 使用篇(5)

    此文已由作者张镐薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 意思就是,开头为北京的范围在A0000000~A9999999的根据后面的哈希值对5取模平均分布在0,1,2 ...

  2. left join on 和where条件的放置(转)

    http://blog.csdn.net/muxiaoshan/article/details/7617533

  3. Java 环境问题汇总

    准备java环境时,需要设置JAVA_HOME 和 Path , CLASSPATH 环境变量,它们可以是用户变量,也可以是系统变量. 注意: 系统变量的路径排在用户变量之前. 其中,Windows操 ...

  4. java.exe is valid, but is for a machine type other than the current machine

    java.exe is valid, but is for a machine type other than the current machine jdk版本不一致问题,在32位机器上使用64位的 ...

  5. jmeter接口测试-调用java的jar包-csv参数化请求-BeanShellPreProcessor生成验签作为请求验证参数-中文乱码----实战

    背景及思路: 需求:要做 创建新卡 接口的测试,要求: 1. 不需要每次手动修改请求参数. 方案:文中先用excle将数据准备好,导出为csv格式,再用jmeter的csv请求进行参数化 2. 卡号需 ...

  6. slf4j日志整合框架的一些问题

    概述: 今天遇到一个问题,现在流程的形式,记录一下解法问题的一些过程, 你将收获解决常用包日志系统冲突的解决办法: Code 由于要使用log4j所以引入以下依赖 <!-- https://mv ...

  7. P2152 [SDOI2009]SuperGCD

    传送门 非常显du然liu的一道题 就是求GCD 因为数据范围... 所以要上压位高精+非递归的辗转相减 关于辗转相减: 如果 A是二的倍数,B是二的倍数   那么GCD(A,B)=2 * GCD(A ...

  8. Identity Service

    Identity Service - 解析微软微服务架构eShopOnContainers(二)   接上一篇,众所周知一个网站的用户登录是非常重要,一站式的登录(SSO)也成了大家讨论的热点.微软在 ...

  9. 转 v$session_longops视图

    转http://www.dbdream.com.cn/2013/10/14/vsession_longops%E8%A7%86%E5%9B%BE/ 1.有的时候不准确 ,我看到 session wai ...

  10. 基于TCP协议网络编程

    1.TCP/IP是一种可靠的网络协议,它在通信的两端各建立一个Socket,从而在通信的两端之间形成网络虚拟链路: 一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路来进行通信: 2.Java对基 ...