模板引擎语法-算术运算

模板引擎语法-算术运算

### 文章目录

  • [模板引擎语法-算术运算](#文章目录 模板引擎语法-算术运算 @[toc] 1.加法运算 2.减法运算 3.乘法与除法运算 4.四则运算 5.整除运算)
  • [@[toc]](#文章目录 模板引擎语法-算术运算 @[toc] 1.加法运算 2.减法运算 3.乘法与除法运算 4.四则运算 5.整除运算)
  • [1.加法运算](#文章目录 模板引擎语法-算术运算 @[toc] 1.加法运算 2.减法运算 3.乘法与除法运算 4.四则运算 5.整除运算)
  • [2.减法运算](#文章目录 模板引擎语法-算术运算 @[toc] 1.加法运算 2.减法运算 3.乘法与除法运算 4.四则运算 5.整除运算)
  • [3.乘法与除法运算](#文章目录 模板引擎语法-算术运算 @[toc] 1.加法运算 2.减法运算 3.乘法与除法运算 4.四则运算 5.整除运算)
  • [4.四则运算](#文章目录 模板引擎语法-算术运算 @[toc] 1.加法运算 2.减法运算 3.乘法与除法运算 4.四则运算 5.整除运算)
  • [5.整除运算](#文章目录 模板引擎语法-算术运算 @[toc] 1.加法运算 2.减法运算 3.乘法与除法运算 4.四则运算 5.整除运算)

在Django框架模板中,没有专门定义关于算术运算的语法。不过,通过一些标签和过滤器的配合使用,可以模拟实现类似"加减乘除"的算术运算。

1.加法运算

在Django模板中定义了一个add过滤器,通过该过滤器可以模拟实现加法运算。

文件路径【TmplSite/gramapp/views.py】

python 复制代码
from django.http import HttpResponse
from django.shortcuts import render
from django.template import loader
from datetime import datetime, date

# Create your views here.

def index(request):
    return HttpResponse("Hello, Django! You're at the gramapp index.")

def filters(request):
    context = {}
    context['title'] = "Django Template Grammar"
    context['filters'] = "filters"
    context['add_num_1'] = 1
    context['add_num_2'] = 2
    context['add_num_3'] = 3
    template = loader.get_template('gramapp/filters.html')
    return HttpResponse(template.render(context, request))

【代码分析】

在变量context中添加了第一个属性add_num_1,并赋值为整数1。

在变量context中添加了第二个属性add_num_2,并赋值为整数2。

在变量context中添加了第三个属性add_num_3,并赋值为整数3。

文件路径【TmplSite/gramapp/templates/gramapp/filters.html】

python 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="/static/css/mystyle.css"/>
    <title>{{ title }}</title>
</head>
<body>

<p class="middle">
    Hello, this is a template tag <b>{{ filters }}</b> page!
</p>
<p class="middle">
    filters - add:<br><br>
    A + B:<br>
    {{ add_num_1 }} + {{ add_num_2 }} = {{ add_num_1 | add:add_num_2 }}<br><br>
    A + B + C:<br>
    {{ add_num_1 }} + {{ add_num_2 }} + {{ add_num_3 }} = {{ add_num_1 | add:add_num_2 | add:add_num_3 }}<br><br>
</p>

</body>
</html>

【代码分析】

对变量add_num_1使用了add过滤器,其参数定义为变量add_num_2,这样,就相当于将变量add_num_2叠加到变量add_num_1上,实现了两个整数的加法运算。

先对变量add_num_1使用了add过滤器,其参数定义为变量add_num_2,然后,通过"链接"的方式再次使用add过滤器,其参数定义为变量add_num_3。这样,就相当于将变量add_num_1、变量add_num_2、变量add_num_3进行了叠加,实现了三个整数的连加运算。

【访问验证】


2.减法运算

在Django模板中没有定义减法过滤器,不过通过add过滤器同样可以模拟实现减法运算。

文件路径【TmplSite/gramapp/views.py】

python 复制代码
from django.http import HttpResponse
from django.shortcuts import render
from django.template import loader
from datetime import datetime, date

# Create your views here.

def index(request):
    return HttpResponse("Hello, Django! You're at the gramapp index.")

def filters(request):
    context = {}
    context['title'] = "Django Template Grammar"
    context['filters'] = "filters"
    context['minus_num_1'] = 10
    context['minus_num_2'] = -5
    context['minus_num_3'] = -3
    template = loader.get_template('gramapp/filters.html')
    return HttpResponse(template.render(context, request))

【代码分析】

在变量context中添加了第一个属性minus_num_1,并赋值为整数10。

在变量context中添加了第二个属性minus_num_2,并赋值为整数-5。

在变量context中添加了第三个属性minus_num_3,并赋值为整数-3。

文件路径【TmplSite/gramapp/templates/gramapp/filters.html】

python 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="/static/css/mystyle.css"/>
    <title>{{ title }}</title>
</head>
<body>

<p class="middle">
    Hello, this is a template tag <b>{{ filters }}</b> page!
</p>
<p class="middle">
    filters - add:<br><br>
    A - B:<br>
    {{ minus_num_1 }}{{ minus_num_2 }} = {{ minus_num_1 | add:minus_num_2 }}<br><br>
    A - B - C:<br>
    {{ minus_num_1 }}{{ minus_num_2 }}{{ minus_num_3 }} = {{ minus_num_1 | add:minus_num_2 | add:minus_num_3}}<br><br>
</p>

</body>
</html>

【代码分析】

对变量minus_num_1使用了add过滤器,其参数定义为变量minus_num_2。这样,就相当于将负整数(add_num_2)叠加到整数(add_num_1)上,实现了两个整数的减法运算。

先对变量minus_num_1使用了add过滤器,其参数定义为变量minus_num_2,然后,通过"链接"的方式再次使用add过滤器,其参数定义为变量minus_num_3。这样,就相当于将整数minus_num_1、负整数minus_num_2和负整数minus_num_3进行了叠加,实现了三个整数的连减运算。

【访问验证】


3.乘法与除法运算

在Django模板中没有专门定义乘除法标签过滤器,不过利用{% widthratio %}标签的特性,可以模拟实现乘除法运算。

文件路径【TmplSite/gramapp/views.py】

python 复制代码
from django.http import HttpResponse
from django.shortcuts import render
from django.template import loader
from datetime import datetime, date

# Create your views here.

def index(request):
    return HttpResponse("Hello, Django! You're at the gramapp index.")

def filters(request):
    context = {}
    context['title'] = "Django Template Grammar"
    context['filters'] = "filters"
    context['multi_div_1'] = 6
    context['multi_div_2'] = 3
    template = loader.get_template('gramapp/filters.html')
    return HttpResponse(template.render(context, request))

【代码分析】

在变量context中添加了第一个属性multi_div_1,并赋值为整数6。

在变量context中添加了第二个属性multi_div_2,并赋值为整数3。

文件路径【TmplSite/gramapp/templates/gramapp/filters.html】

python 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="/static/css/mystyle.css"/>
    <title>{{ title }}</title>
</head>
<body>

<p class="middle">
    Hello, this is a template tag <b>{{ filters }}</b> page!
</p>
<p class="middle">
    filters - multiply & divide:<br><br>
    A &times; B:<br>
    {{ multi_div_1 }} &times; {{ multi_div_2 }} = {% widthratio multi_div_1 1 multi_div_2 %}<br><br>
    A &divide; B:<br>
    {{ multi_div_1 }} &divide; {{ multi_div_2 }} = {% widthratio multi_div_1 multi_div_2 1 %}<br><br>
</p>

</body>
</html>

【代码分析】

通过{% widthratio multi_div_1 1 multi_div_2 %}标签对变量multi_div_1和变量multi_div_2进行乘法运算。

通过{% widthratio multi_div_1 1 multi_div_2 %}标签对变量multi_div_1和变量multi_div_2进行除法运算。

【访问验证】


4.四则运算

综合利用上面介绍的加、减、乘、除运算,自然可以实现复杂的四则运算。

文件路径【TmplSite/gramapp/views.py】

python 复制代码
from django.http import HttpResponse
from django.shortcuts import render
from django.template import loader
from datetime import datetime, date

# Create your views here.

def index(request):
    return HttpResponse("Hello, Django! You're at the gramapp index.")

def filters(request):
    context = {}
    context['title'] = "Django Template Grammar"
    context['filters'] = "filters"
    context['alg_num_1'] = 10
    context['alg_num_2'] = 5
    context['alg_num_3'] = -2
    template = loader.get_template('gramapp/filters.html')
    return HttpResponse(template.render(context, request))

【代码分析】

在变量context中添加了第一个属性alg_num_1,并赋值为整数10。

在变量context中添加了第二个属性alg_num_2,并赋值为整数5。

在变量context中添加了第三个属性alg_num_3,并赋值为整数-2。

文件路径【TmplSite/gramapp/templates/gramapp/filters.html】

python 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="/static/css/mystyle.css"/>
    <title>{{ title }}</title>
</head>
<body>

<p class="middle">
    Hello, this is a template tag <b>{{ filters }}</b> page!
</p>
<p class="middle">
    filters - add & minus & multiply & divide:<br><br>
    ({{ alg_num_1 }}+{{ alg_num_2 }}{{ alg_num_3 }})^2&nbsp;&nbsp;=&nbsp;&nbsp;
    {% widthratio alg_num_1|add:alg_num_2|add:alg_num_3 1 alg_num_1|add:alg_num_2|add:alg_num_3 %}<br><br>
    ({{ alg_num_1 }}+{{ alg_num_2 }})&divide;({{ alg_num_2 }}{{ alg_num_3 }})&nbsp;&nbsp;=&nbsp;&nbsp;
    {% widthratio alg_num_1|add:alg_num_2 alg_num_2|add:alg_num_3 1 %}
</p>

</body>
</html>

【代码分析】

先通过add过滤器实现了连加和连减运算,然后通过{% widthratio %}标签实现了平方运算。

先通过add过滤器实现了连加和加减运算,然后通过{% widthratio %}标签实现了除法运算,相当于实现了"先加减、后乘除"的四则运算。

【访问验证】


5.整除运算

在Django模板中,提供了一个divisibleby过滤器可以实现整除运算,如果能整除,则返回True,否则返回False。

文件路径【TmplSite/gramapp/views.py】

python 复制代码
from django.http import HttpResponse
from django.shortcuts import render
from django.template import loader
from datetime import datetime, date

# Create your views here.

def index(request):
    return HttpResponse("Hello, Django! You're at the gramapp index.")

def filters(request):
    context = {}
    context['title'] = "Django Template Grammar"
    context['filters'] = "filters"
    context['divisibleby_1'] = 10
    context['divisibleby_2'] = 5
    context['divisibleby_3'] = 3
    template = loader.get_template('gramapp/filters.html')
    return HttpResponse(template.render(context, request))

【代码分析】

在变量context中添加了第一个属性divisibleby_1,并赋值为整数10。

在变量context中添加了第二个属性divisibleby_2,并赋值为整数5。

在变量context中添加了第三个属性divisibleby_3,并赋值为整数3。

文件路径【TmplSite/gramapp/templates/gramapp/filters.html】

python 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="/static/css/mystyle.css"/>
    <title>{{ title }}</title>
</head>
<body>

<p class="middle">
    Hello, this is a template tag <b>{{ filters }}</b> page!
</p>
<p class="middle">
   filters - divisibleby:<br><br>
   {{ divisibleby_1 }} % {{ divisibleby_2 }}:<br>
        {% if divisibleby_1|divisibleby:divisibleby_2 %}
            {{ divisibleby_1 }} &divide; {{ divisibleby_2 }} can divisibleby.
        {% else %}
            {{ divisibleby_1 }} &divide; {{ divisibleby_2 }} can not divisibleby.
        {% endif %}
        <br><br>
        {{ divisibleby_1 }} % {{ divisibleby_3 }}:<br>
        {% if divisibleby_1|divisibleby:divisibleby_3 %}
            {{ divisibleby_1 }} &divide; {{ divisibleby_3 }} can divisibleby.
        {% else %}
            {{ divisibleby_1 }} &divide; {{ divisibleby_3 }} can not divisibleby.
        {% endif %}
    </p>

</body>
</html>

【代码分析】

主要是通过divisibleby过滤器进行逻辑判断,检查整数divisibleby_1是否能够被整数divisibleby_2整除。然后,通过{% if-else-endif %}标签根据divisibleby过滤器返回的布尔值(True或False)输出相应的结果。

也是通过divisibleby过滤器进行逻辑判断,检查整数divisibleby_1是否能够被整数divisibleby_3整除。然后,通过{% if-else-endif %}标签根据divisibleby过滤器返回的布尔值(True或False)输出相应的结果。

【访问验证】

相关推荐
专注API从业者13 分钟前
Python/Java 代码示例:手把手教程调用 1688 API 获取商品详情实时数据
java·linux·数据库·python
java1234_小锋20 分钟前
[免费]基于Python的协同过滤电影推荐系统(Django+Vue+sqlite+爬虫)【论文+源码+SQL脚本】
python·django·电影推荐系统·协同过滤
看海天一色听风起雨落1 小时前
Python学习之装饰器
开发语言·python·学习
XiaoMu_0011 小时前
基于Python+Streamlit的旅游数据分析与预测系统:从数据可视化到机器学习预测的完整实现
python·信息可视化·旅游
THMAIL2 小时前
深度学习从入门到精通 - 生成对抗网络(GAN)实战:创造逼真图像的魔法艺术
人工智能·python·深度学习·神经网络·机器学习·生成对抗网络·cnn
我没想到原来他们都是一堆坏人3 小时前
(未完待续...)如何编写一个用于构建python web项目镜像的dockerfile文件
java·前端·python
Mr_Xuhhh3 小时前
sqlite3的使用
jvm·oracle·sqlite
总有刁民想爱朕ha4 小时前
车牌模拟生成器:Python3.8+Opencv代码实现与商业应用前景(C#、python 开发包SDK)
开发语言·python·数据挖掘
人衣aoa4 小时前
Python编程基础(八) | 类
开发语言·python
大模型真好玩4 小时前
深入浅出LangGraph AI Agent智能体开发教程(四)—LangGraph全生态开发工具使用与智能体部署
人工智能·python·mcp