django 模板 (ああああああああ!かぴ)

news/2024/7/3 2:27:36

一 常用
1. {{ 不存在 | default : "xx" }}
2. {{ name | length }}
3. {{ xx | slice "1:-1" }}
4. {{ now | date: "Y-m-d H:i:s" }} now = datetime.now()
5. {{ xx | truncatechars : x }}      截取文字
6. {{ xx | truncatewords : x }}      截取单词
7. {% for k,v in d.item %}
           {{ k }} {{ v }}
     {% endfor %}
8. {% for person in person_list %}
     {{ person.name }}
 { % empty %}
   {{ xxx }}
   {% endfor %}
9. 

{% for name in name_list %}<li class="{% if forloop.first %} 'sb' {% endif %}">
{{ forloop.revcounter }} - {{ name }}</li>
{% endfor %}

forloop.counter 当前索引值默认从1开始
forloop.counter 0 从1开始
forloop.revcounter 倒序索引值默认以1结束
forloop.revcounter 0      以0结束
forloop.firs          是不是第一次循环
forloop.last

二 自定义

在app下建templatetags python package,再新建个py文件

mytags.py

 

from django import template
register = template.Library()   # 注册


# 自定义filter
@register.filter(name="aki")
def multi(x, y):
    return x*y
# 模板用法是 {{ num | aki:2}}   num已经被指定为12, x是管道符前面的参数,y是后面的参数如 2  最多两个参数
# 注意上面的aki:2 :2 不能有空格,否则报参数个数的错误


# 自定义simple_tag
@register.simple_tag(name="desky")
def my_input(x, y, z):
    return x*y*z
# 模板用法是 {% desky "x" "xo" "xoo"%}    可以定义多个参数


# 自定义inclusion_tag
@register.inclusion_tag('test.html')
def show_result(n):
    n = 1 if n < 1 else int(n)
    data = ["第{}项".format(i) for i in range(1, n+1)]
    return {"data": data}

text.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

</head>
<body>
{% load mytags %}
{% show_result 5 %}
{% desky 2 5 6%}
{{ num | aki:23 }}
{##}
</body> </html>

test.html

<ul>
    {% for choice in data %}
        <li>{{ choice }}</li>
    {% endfor %}
</ul>
几点说明
filter: 最多两个两个参数,可以进行逻辑判断,{% if i|multi > 1000 %} .....,还有千万注意{ num | aki:2}}不能有空格 引用是 {{}}

simple_tag : 可以传多个参数,但不能进行逻辑判断,% desky "x" "xo" "xoo"%} 引用时 {%%}
inclusion_tag('xx.html'): 是将一段html 插入到哪里,这里是将test插入到text中,{% show_result 5 %} 要引用,还要将参数传递进去

最后说的是,新建的python package 必须叫templatetags, 别忘引入{% load mytags %}









转载于:https://www.cnblogs.com/deskyaki/p/10537476.html


http://www.niftyadmin.cn/n/1941909.html

相关文章

ES6 数组解构赋值

1.数组解构 let [a, b, c,d] ["aa", "bb", 77,88]; alert(a) //弹出aa 可以用babel 解析看ES5的转换结果 嵌套数组解构 let [a,b,[c,d],e] ["aa",bb,[33,44],55]; alert(c) //弹出33 空缺变量 let [a,b,,e] ["aa",bb,[33,…

第二个议题

① 在每个问题后面&#xff0c;请说明哪一章节的什么内容引起了你的提问&#xff0c;提供一些上下文 ② 列出一些事例或资料&#xff0c;支持你的提问 。 ③ 说说你提问题的原因&#xff0c;你说因为自己的假设和书中的不同而提问&#xff0c;还是不懂书中的术语&#xff0c;还…

山东省高中学业水平考试计算机考试教材,2017年山东高中学业水平考试科目

考试科目(1)会考的文化科目为&#xff1a;语文、数学、外语、思想政治、物理、化学、历史、地理、生物、信息技术、通用技术&#xff0c;共计11科&#xff1b;实践科目为&#xff1a;物理、化学、通用技术、生物的实验操作。文化科目的会考方式分为考试、考查两种&#xff0c;采…

Kafka入门, 消费者组案例(十九)

pom 文件 <dependencies><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>3.0.0</version></dependency></dependencies>独立消费者案例&#xff08;订阅主语&a…

(十四)模块(Module)的补充、Mix-in

&#xff08;1&#xff09;Module和Class的关系、Module和Namespace的关系&#xff0c;Devise #查看一个类的父类,第二个说明类继承自模块&#xff08;模块是类的父类&#xff09;puts String.superclass,Class.superclass,Module.superclass #ruby没有命名空间的概念&#xf…

Struts2的拦截器是如何使用AOP工作的

拦截器&#xff08;interceptor&#xff09;是Struts2最强大的特性之一&#xff0c;也可以说是struts2的核心&#xff0c;拦截器可以让你在Action和result被执行之前或之后进行一些处理。同时&#xff0c;拦截器也可以让你将通用的代码模块化并作为可重用的类。Struts2中的很多…

bzoj 2588: Spoj 10628. Count on a tree

DFS序在树上建出主席树&#xff0c;然后。。。。。 1 #include<cstdio>2 #include<iostream>3 #include<cstring>4 #include<cstdlib>5 #include<cmath>6 #include<algorithm>7 #define ll long long8 #define M 2000099 using namespace …

noi题库(noi.openjudge.cn) 1.7编程基础之字符串T21——T30

T21&#xff1a;单词替换 描述 输入一个字符串&#xff0c;以回车结束&#xff08;字符串长度<100&#xff09;。该字符串由若干个单词组成&#xff0c;单词之间用一个空格隔开&#xff0c;所有单词区分大小写。现需要将其中的某个单词替换成另一个单词&#xff0c;并输出替…