django 模板

一 常用

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

10. {{ a-html | safe }} 

11. {{ obj | capfirst }}     首字母大写

插入:

cycle

每执行这个标签一次输出参数中的一个值。第一次执行输出第一个参数,第二次执行输出第二个参数,以此 类推。所有参数都输出一遍之后,回到第一个参数,再依次输出。这个标签在循环中特别有用:

{% for o in some_list %}

<tr class="{% cycle 'row1' 'row2' %}">
 ... 
</tr> 
{% endfor %}

 

firstof:

输出参数中第一个不为 False 的变量值。如果传入的变量都为 False,不输出任何内容。用法示例

{% firstof var1 var2 var3 %}

等效于

{% if var1 %}

{{ var1 }}

{% elif var2 %}

{{ var2 }}

{% elif var3 %}

{{ var3 }}

{% endif %}

 

for :

可以使用 {% for obj in list reversed %} 反向迭代列表。如果需要迭代列表构成的列表,可以把各个子列 表拆包出来,赋予单独的变量。访问字典中的元素时也可以这么做。假如上下文中有个名为 data 的字典

{% for key, value in data.items %}

{{ key }}: {{ value }}

{% endfor %}

 

ifchanged:

检查前一次迭代之后值是否变了。{% ifchanged %} 块标签在循环中使用。有两种用法:
1. 检查渲染得到的内容,与之前的状态比较,只在有变化时显示内容。 2. 检查指定的一个或多个变量的值是否有变化。


spaceless :

删除 HTML 标签之间的空白,包括制表符和换行符。用法示例:
{% spaceless %}

<p>
<a href="foo/">Foo</a>
</p>

{% endspaceless %}

 

这个示例返回的 HTML 如下:
<p><a href="foo/">Foo</a></p>
 

 

 with:

把复杂的变量缓存到一个简单的名称下。多次访问耗资源的(如访问数据库)方法时可以这么做。例如:
{% with total=business.employees.count %}

{{ total }} employee{{ total|pluralize }}

{% endwith %}

 

addslashes:

在引号前加上斜线。可用于转义 CSV 中的字符串。例如:
{{ value|addslashes }}
如果 value 为 "I'm using Django",输出 "I\'m using Django"。
 

center:

在指定宽度中居中显示值。例如:
"{{ value|center:"14" }}"
如果 value 为 "Django",输出 "␣␣␣␣Django␣␣␣␣"(␣ 表示一个空格)。
 

 

default_if_none:

当且仅当 value 为 None 时使用指定的默认值,否则使用 value 的值。
 

 

dictsort:

按参数指定的键排序字典构成的列表,返回排序后的列表。例如:
{{ value|dictsort:"name" }}
 

 

divisibleby:

如果值能被参数整除,返回 True。例如:
{{ value|divisibleby:"3" }}
如果 value 为 21,返回 True。

 

floatformat:

不指定参数时,近似浮点数,只保留一位小数(前提是有小数)。如果指定了整数参数,floatformat 近似时 保留相应位数的小数。
如果 value 为 34.23234,{{ value|floatformat:3 }} 输出 34.232。
 

length_is:

如果值的长度与参数相等,返回 True,否则返回 False。例如:
{{ value|length_is:"4" }}
 


ljust:

在指定宽度中左对齐值。例如:
{{ value|ljust:"10" }}
如果 value 为 "Django",输出 "Django␣␣␣␣"(␣ 表示一个空格)。

 

truncatechars_html :

与 truncatechars 类似,不过知道如何截断 HTML 标签。
 

urlize :

把文本中的 URL 和电子邮件地址转换成可点击的链接。支持以 http://、https:// 或 www. 开头的 URL。

 

urlizetrunc:

与 urlize 一样,把 URL 和电子邮件地址转换成可点击的链接,但是在指定的字符长度处截断 URL。例如:
{{ value|urlizetrunc:15 }}
如果 value 为 "Check out www.djangoproject.com",输出 "Check out <a href="http://www.djangoproject.com" rel="nofollow">www.djangopr…</a>"。与 urlize 一样,这个过滤器只应该应用于纯文本。
 

 

 yesno:

把 True、False 和 None(可选)映射到字符串“yes”、“no”、“maybe”上,或者是通过参数传入的列表上(以 逗号分隔),根据真假值情况,返回相应的字符串。例如:
{{ value|yesno:"yeah,no,maybe" }}

 

二 自定义(要重启才能生效)

在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 %}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,我无法找到关于Django运费模板的具体信息。但是,我可以为您提供一些关于Django模板的基本知识。 Django模板是一种用于生成动态网页的工具。它允许您将静态HTML与动态数据结合在一起,以便在网页上显示动态内容。在Django中,您可以使用模板来呈现数据,并将其与视图函数中的逻辑进行分离。 在Django中,您可以创建一个模板文件,其中包含HTML和模板语言。模板语言允许您在模板中插入动态数据、循环和条件语句等。您可以使用模板标签和过滤器来处理数据并进行逻辑操作。 要使用Django模板,您需要在视图函数中加载模板,并将数据传递给模板进行渲染。然后,您可以将渲染后的模板发送给客户端以显示在浏览器中。 以下是一个简单的示例,演示如何在Django中使用模板: 1. 创建一个模板文件(例如template.html),其中包含HTML和模板语言: ```html <!DOCTYPE html> <html> <head> <title>My Django Template</title> </head> <body> <h1>Welcome to {{ website_name }}</h1> <p>Today's date is {{ current_date }}</p> </body> </html> ``` 2. 在视图函数中加载模板并将数据传递给模板进行渲染: ```python from django.shortcuts import render from datetime import date def my_view(request): website_name = "My Website" current_date = date.today() return render(request, 'template.html', {'website_name': website_name, 'current_date': current_date}) ``` 3. 在urls.py中配置URL与视图函数的映射关系: ```python from django.urls import path from .views import my_view urlpatterns = [ path('my-view/', my_view, name='my-view'), ] ``` 通过访问`http://localhost:8000/my-view/`,您将看到渲染后的模板页面,其中包含动态数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值