VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • python基础教程之Django 模版语法 三

使用自定义simple_tag

在 app01 下面创建 templatetags 文件夹,在创建 my_tag.py 文件,内容如下:

from django import template
from django.utils.safestring import mark_safe

register = template.Library() # register的是固定变量名,不能改变

@register.simple_tag
def my_add100(v1):
    return v1 + 100

修改 login.html 文件

...
{% my_add100 4 %}

{% my_add 10 11 12 %}

修改 settings.py 文件

# 添加
            'libraries':{
                "my_tag":"app01.templatetags.my_tag",

位置如下

运行效果如下:

使用自定义 filter

修改 my_tag.py 文件

from django import template
from django.utils.safestring import mark_safe

register = template.Library() # register的是固定变量名,不能改变

# filter 参数不能超过两个
@register.filter
def my_add100(v1, v2):
    return v1 + 100 + v2

# simple_tag 不能用于if 语句
@register.simple_tag
def my_add(v1,v2,v3):
    return v1 + v2 + v3

修改 login.html 文件

....
{{ num | my_add100:8 }}
...

修改 views.py 文件

........
def login(req):
    if req.method=="POST":
        return HttpResponse("ok")

    num = 100

    return render(req, "login.html", locals())

运行效果如下:

{% if %} 的使用

修改 login.html 文件

......
{% if num|my_add100:34 > 100 %}
    <p>大于100</p>
{% elif num|my_add100:34 < 100 %}
    <p>小于100</p>
{% else %}
    <p>等于100</p>
{% endif %}

总结:

simple_tag : 可以传多个参数, 不能用于 if for 语句
filter : 最多两个参数


相关教程