一 常用
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 %}


django 模板 (ああああああああ!かぴ)的更多相关文章

  1. Django模板与Vue.js冲突问题

    参考: https://my.oschina.net/soarwilldo/blog/755984 方法1:修改vue.js的默认的绑定符号 Vue.config.delimiters = [&quo ...

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

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

  3. python django 模板

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

  4. django 模板中定义临时列表

    <ul class="num_t clr"> {% for obj in ""|ljust:"10" %} <li> ...

  5. Django 模板中引用静态资源(js,css等)

    Django 模板中免不了要用到一些js和CSS文件,查了很多网页,被弄得略晕乎,还是官网靠谱,给个链接大家可以自己看英文的. https://docs.djangoproject.com/en/1. ...

  6. Django模板-分离的模板

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

  7. Django模板-在视图中使用模板

    之前我们已经有了自己的视图mysite.views.py中,应该是这样子的 from django.http import HttpResponse import datetime def curre ...

  8. Django模板-模板标签

    接着Django模板-基础知识继续写模板相关知识. if标签 {% if %} 标签接受 and , or 或者 not 关键字来对多个变量做判断 ,或者对变量取反( not ). 但是不允许在同一个 ...

  9. Django模板-基础知识

    上一篇中带参数的URLconf虽然可以做到传参动态显示内容,但是最终现实的内容还是硬编码到Python代码中的 def hours_ahead(request,phours): try: phours ...

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

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

随机推荐

  1. 《Clean Code》阅读笔记

    Chapter 2  命名 命名要表现意图 避免歧义和误导,增强区分 命名可读性:便于发音,增强印象,便于交流 命名可查性:增强区分,便于搜索 类和对象的命名:名词或名词短语 方法的命名:动词或动词短 ...

  2. C# 在类中使用Timer定时器以及延时处理的方法

    我们平时在C#中要用到定时功能时,有自带定时器,一般在定时器里面写函数就行了,现在需要在类里面写了一个定时器,不和界面绑定,一开始的时候感觉没什么思路,然后看了一下界面的设计代码,有了思路,还是很简单 ...

  3. Unity --- 如何简单的判断图片是否含有 alpha channel

    var texImporter = AssetImporter.GetAtPath(assetPath) as TextureImporter; if (texImporter.DoesSourceT ...

  4. 【转】 glibc detected *** corrupted double-linked list:错误的原因有如下三种可能

    一个多线程的大程序运行的时候崩掉了,屏幕上打出这个:   *** glibc detected *** corrupted double-linked list: 0xb78381d8 *** 三个原 ...

  5. 自动生成CHANGELOG.md

    $ npm install -g conventional-changelog-cli $ cd my-project $ conventional-changelog -p angular -i C ...

  6. sentinel详解

    https://segmentfault.com/a/1190000002680804 sentinel端口 port #工作路径 dir "/usr/local/redis-6380&qu ...

  7. 【C#】【对象转XML】xml序列化

    笔记:xml序列化 /// <summary>        /// xml序列化        /// </summary>        /// <param nam ...

  8. vue图片裁剪插件vue-cropper

    最近做后台管理,需要用到图片裁剪,这个组件很好用,记录一下. 工作太忙,就不总结了. 链接分享:https://github.com/xyxiao001/vue-cropper

  9. Request中的各种地址

    今天来得匆忙,先上图吧,稍后再整理!

  10. spiflash

    1.SPI Flash (即SPI Nor Flash)是Nor Flash的一种:2.NOR Flash根据数据传输的位数可以分为并行(Parallel)NOR Flash和串行(SPI)NOR F ...