使用 Flask 查找 jinja2 模板中的数字总和

2023-12-28

我正在学习 Flask,并尝试创建一个网络应用程序,它接受学生的姓名和分数,查找所有分数的总和并在表格中显示内容。但总数总是显示为0.

代码如下

标记总计.py:

from flask import Flask, render_template, request

app = Flask (__name__)

@app.route('/')
def student():
        return render_template('student.html')

@app.route('/result', methods = ['POST', 'GET'])
def result():
        if request.method == 'POST':
                result = request.form
                return render_template('result.html', result = result)

if __name__ == '__main__':
        app.run(host = '0.0.0.0', debug = True)

学生.html:

        <form action = "/result" method = "POST">
                <p>Name <input type = "text" name = "Name" /></p>
                <p>Physics <input type = "text" name = "Physics" /></p>
                <p>Chemistry <input type = "text" name = "chemistry" /></p>
                <p>Maths <input type ="text" name = "Mathematics" /></p>
                <p><input type = "submit" value = "submit" /></p>
        </form>

</body>
</html>

结果.html:

<html>
        <head>
                <title>Results</title>
        </head>

        <body>
                <h1>{{result["Name"]}}'s results</h1>
                {% set total = 0 %}
                <table border = 1>
                {% for key, val in result.iteritems() %}
                        {% if key != 'Name' %}
                                {% set total = total|int + val|int %}
                                <tr>
                                        <td>{{ key }}</td>
                                        <td>{{ val }}</td>
                                        <td>{{ total }}</td>
                                </tr>
                        {% endif %}
                {% endfor %}
                <tr>
                        <td>Total</td>
                        <td>{{total}}</td>
                </tr>
                </table>
        </body>
</html>

输出的html源码如下:

<html>
	<head>
		<title>Results</title>
	</head>
	<body>
		<h1>ABC's results</h1>
		<table border = 1>
			<tr>
				<td>Mathematics</td>
				<td>100</td>
				<td>100</td>
			</tr>
			<tr>
				<td>chemistry</td>
				<td>100</td>
				<td>100</td>
			</tr>
			<tr>
				<td>Physics</td>
				<td>100</td>
				<td>100</td>
			</tr>
			<tr>
				<td>Total</td>
				<td>0</td>
			</tr>
		</table>
	</body>
</html>

有人可以帮我了解如何解决这个问题吗?


问题是你的total循环内部定义不一样total在循环外部定义(和访问)。这就是本地作用域的作用。

您可以通过使用这样的 hack 来克服这个问题(改编自this https://stackoverflow.com/a/21860373/3025981回答)。

<html>
        <head>
                <title>Results</title>
        </head>

        <body>
                <h1>{{result["Name"]}}'s results</h1>
                {% set total = [0] %}
                <table border = 1>
                {% for key, val in result.iteritems() %}
                        {% if key != 'Name' %}
                                {% set _ = total.append(total.pop() + val|int) %}
                                <tr>
                                        <td>{{ key }}</td>
                                        <td>{{ val }}</td>
                                        <td>{{ total[0] }}</td>
                                </tr>
                        {% endif %}
                {% endfor %}
                <tr>
                        <td>Total</td>
                        <td>{{ total[0] }}</td>
                </tr>
                </table>
        </body>
</html>

但我真的不确定在模板中做这样的事情是个好主意。模板的主要思想是将逻辑(例如计算总数)和表示分离,这违反了这一原则。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Flask 查找 jinja2 模板中的数字总和 的相关文章

  • 行未从树视图复制

    该行未在树视图中复制 我在按行并复制并粘贴到未粘贴的任何地方后制作了弹出复制 The code popup tk Menu tree opportunity tearoff 0 def row copy item tree opportun
  • 为什么 .setGeometry() 不改变 QWidget 实例的大小?

    我想使用 QWidget 更改 QPushButton 的大小 setGeometry https doc qt io qtforpython 5 PySide2 QtWidgets QWidget html PySide2 QtWidge
  • 一次将Python dict的内容分配给多个变量?

    我想做这样的事情 def f return a 1 b 2 c 3 a b f or a b f IE 这样 a 被分配为 1 b 被分配为 2 并且 c 是未定义的 这与此类似 def f return 1 2 a b f 依赖于变量名称
  • 从字符串到类型的词法转换

    最近 我尝试用Python存储和读取文件中的信息 遇到了一个小问题 我想从文本文件中读取类型信息 从 string 到 int 或 float 的类型转换非常有效 但从 string 到 type 的类型转换似乎是另一个问题 当然 我尝试了
  • 在python中将文本文件解析为列表

    我对 Python 完全陌生 我正在尝试读取包含单词和数字组合的 txt 文件 我可以很好地读取 txt 文件 但我正在努力将字符串转换为我可以使用的格式 import matplotlib pyplot as plt import num
  • 即使使用 .loc[row_indexer,col_indexer] = value 时也会设置 WithCopyWarning

    这是我的代码中得到的行之一SettingWithCopyWarning value1 Total Population value1 Total Population replace to replace value 4 然后我将其更改为
  • 如何从 PyCharm 项目中获取我的“exe”[重复]

    这个问题在这里已经有答案了 通过 PyCharm 在 Python 上编写一些项目 我想从中获取一个exe文件 我尝试过 另存为 gt XXX exe 但是 当我尝试执行它时出现错误 此类操作系统不支持该文件 附注 我有win7 x64 它
  • Python BeautifulSoup XML 解析

    我编写了一个简单的脚本来使用 BeautifulSoup 模块解析 XML 聊天日志 标准 soup prettify 工作正常 只是聊天日志中有很多绒毛 您可以在下面看到我正在使用的脚本代码和一些 XML 输入文件 Code import
  • Flask send_from_directory

    我有一个 Flask Web 应用程序 允许用户上传文件 然后下载或在浏览器中显示它们 我应该使用send from directory在生产时从我的服务器上的上传文件夹提供这些文件 你最好让 nginx 为你的静态文件提供服务 众所周知
  • 可以在 TensorFlow 中使用排名相关作为成本函数吗?

    我正在处理偶尔充满异常值的极其嘈杂的数据 因此我主要依靠相关性来衡量我的神经网络的准确性 是否可以明确使用诸如等级相关性 斯皮尔曼相关系数 之类的东西作为我的成本函数 到目前为止 我主要依赖 MSE 作为相关性的代理 我现在面临三个主要障碍
  • 优化 Keras 以使用所有可用的 CPU 资源

    好吧 我真的不知道我在说什么 所以请耐心听我说 我正在使用 Theano 后端运行 Keras 以在 MNIST 图像上运行基本的神经网络 目前只是一个教程 过去 我一直使用我的旧 HP 笔记本电脑 因为我有 Windows 和 Ubunt
  • Paramiko - 使用私钥连接 - 不是有效的 OPENSSH 私钥/公钥文件

    我正在尝试找到解决方案 但无法理解我做错了什么 在我的 Linux 服务器上 我运行了以下命令 ssh keygen t rsa 这产生了一个id rsa and id rsa pub file 然后我将它们复制到本地并尝试运行以下代码 s
  • PIL Image.size 返回相反的宽度/高度

    使用PIL确定图像的宽度和高度 在特定图像上 幸运的是只有这一个 但这很麻烦 从 image size 返回的宽度 高度是相反的 图片 http storage googleapis com cookila 533ebf752b9d1f7c
  • 如果字段值在外部列表中,Django 会注释布尔值

    想象一下我有这个 Django 模型 class Letter models Model name models CharField max length 1 unique True 还有这个列表 vowels a e i o u 我想查询
  • 如何通过双击在浏览器中打开 ipynb 文件

    以前 我安装了 Canopy 当时 我只需双击 ipynb 文件并在浏览器中打开它们即可 但是 后来我需要Anaconda 一旦我安装了它 这个功能就没有了 现在我只希望能够简单地双击 ipynb 文件 然后该文件就会在 Firefox 中
  • Matplotlib Scatter - ValueError:RGBA 序列的长度应为 3 或 4

    我正在尝试为我的功能绘制图表 但不断收到此错误 ValueError RGBA sequence should have length 3 or 4 每当我只有 6 种形状时 代码就可以完美运行 但现在我将其增加到 10 种 它就不起作用了
  • 在 matplotlib 中使用一组标量值对球体表面着色

    我对 matplotlib 相当陌生 这也是我的第一个问题 我试图代表脑电图记录的头皮表面电位 到目前为止 我已经有了一个球体投影的二维图形 它是使用轮廓生成的 并且几乎可以归结为普通的热图 有什么方法可以在半个球体上完成此操作吗 即生成一
  • 查找给定节点的最高权重边

    我在 NetworkX 中有一个有向图 边缘的权重从 0 到 1 表示它们发生的概率 网络连通性非常高 所以我想修剪每个节点的边缘 只保留最高概率的节点 我不确定如何迭代每个节点并仅保留最高权重in edges在图中 有没有一个networ
  • Python - 如何查询定义方法的类?

    我的问题有点类似于this one https stackoverflow com questions 5520580 how do you get all classes defined in a module but not impor
  • 异步和协程与任务队列

    我一直在阅读有关 python 3 中的 asyncio 模块的内容 以及更广泛地了解 python 中的协程的内容 但我不明白是什么让 asyncio 成为如此出色的工具 我的感觉是 你可以用协程做的所有事情 通过使用基于多处理模块 例如

随机推荐

  • 如何使用 jQuery.support 检测 IE7 及更低版本?

    目前我正在使用 jQuery browser 来检测 IE7 及更低版本 if browser msie parseInt browser version lt 7 codes 但是 jQuery browser 在 jQuery 1 3
  • Python信息获取实现

    我目前正在使用 scikit learn 对 20ng 数据集进行文本分类 我想计算矢量化数据集的信息增益 它一直建议 https stackoverflow com questions 46752650 information gain
  • docker - 如何禁用容器上的自动重启?

    我可以启用自动重启 restart always 但是当我停止容器后 如何关闭该属性 我通常运行一个网络服务器并通常映射端口 80 docker run d restart always p 80 80 i t myuser myproj
  • 人员 API - QUOTA_EXCEEDED/超出 FBS 配额限制

    google people api 页面正确说明了如何验证并列出 10 个示例联系人 并且一切正常 https developers google com people quickstart python https developers
  • 当属性设置器为内部时,ADO.NET 数据服务实体框架请求错误

    当使用实体框架数据模型公开 ADO NET 数据服务时 我收到一条错误消息 该数据模型包含一个带有属性内部设置器的实体 称为 Case 如果我将设置器修改为公共 使用实体设计器 则数据服务可以正常工作 我不需要在数据服务中公开实体 Case
  • 如何在 NodeJS 中锁定(互斥)?

    有些外部资源 通过 API 访问可用库存 一次只能被一个线程访问 我的问题是 NodeJS 服务器并发处理请求 我们可能会同时有多个请求尝试保留库存 如果我同时点击库存 API 那么它将返回重复的可用库存 因此 我需要确保一次只访问一个线程
  • 如何在 Android 上使用 java/kotlin 减小视频大小?

    我想减小 Android Studio 中的视频大小 并且上传到 PlayStore 需要兼容 64 位架构 我之前尝试过使用 ffmpeg 它成功压缩了 mp4 但需要更长的时间 而且这个 3gp 解决方案不包含音频 还有另一个选项或库来
  • 连接字符串和资源值时出现问题

    我的 aspx 页面出现奇怪的行为 我正在国际化一些页面 但由于我只想在资源中保留实体或值对象 所以我希望有一个键值 例如 pt br CITY Cidade STATE Estado 但是当我列出实体时 我想将 放在末尾 喜欢
  • ReactJS 中的 href 和 onClick

    根据 Reactjs org 处理事件并防止默认使用以下代码 function ActionLink function handleClick e e preventDefault console log The link was clic
  • Android Studio 3.2.1 不断损坏奇怪 XML 上的 Java 文件 [重复]

    这个问题在这里已经有答案了 在 Android Studio 上随机崩溃后 我的很多代码都被 Android Studio 打开 就好像它是 XML 或 R class 一样 损坏文件示例 1 https i stack imgur com
  • 使第三方库在我的 R 包中可用 [重复]

    这个问题在这里已经有答案了 我正在开发一个使用第三方函数的 R 包 可在 Bioconductor 包 methyilumi 中找到 在我的 R 包的代码中 我从一开始就导入了methylumi 和library methylumi 在开发
  • MySQL 从排行榜中获取排名

    我正在基于非常好的教程的游戏中实现排行榜 http gamedevelopment tutsplus com tutorials how to code a self hosted phpsql leaderboard for your g
  • 从固定文档序列中获取固定文档

    相当简单 我正在从磁盘中取出一个 XPSDocument 我想从这个 XpsDocument 中获取固定文档 但我遇到了一些麻烦 因为我只能获取固定文档序列 而且我不知道如何从该序列中提取 XpsDocuments 到目前为止我已经尝试过类
  • 在表单提交上运行 JavaScript 函数

    试图重新回到 Javascript 在这个非常基本的事情上遇到了一些麻烦 https jsfiddle net gfitzpatrick2 aw27toyv 3 https jsfiddle net gfitzpatrick2 aw27to
  • 使用 jQuery 删除第一个列表元素

    我有以下清单 ul li 1 li li 2 li li 3 li li 4 li li 5 li li 6 li ul 如何使用 jQuery 删除此列表的第一个元素 即数字 1 并保持其余元素不变 我本以为这有一个非常简单的解决方案 但
  • Visual Studio 2012 无法识别现有的单元测试

    我之前创建了一个单元测试项目 然后暂时将其从我的解决方案中删除 现在我已将其添加回来 Visual Studio 未检测到我的单元测试 并且我不知道如何运行它们 我在网上查了一下 看到有一些关于 测试工具 设置的解决方案 但它似乎在VS 2
  • wget 与 python 时间限制

    我有一个很大的 URL 文本文件 必须通过 wget 下载 我编写了一个小的 python 脚本 它基本上循环遍历每个域名并使用 wget os system wget URL 下载它们 但问题是 如果远程服务器在连接后没有回复 wget
  • 离散二维数据的线性插值

    所以我有一些不规则间隔的数据 我想将它们插值到规则网格上 我想做的正是this https stackoverflow com questions 3864899 resampling irregularly spaced data to
  • XML 预览中的渲染问题:无法找到模式 0 [重复]

    这个问题在这里已经有答案了 更新android studio后渲染时出现异常 渲染期间引发异常 无法定位模式 0 java lang IllegalStateException Unable to locate mode 0 at andr
  • 使用 Flask 查找 jinja2 模板中的数字总和

    我正在学习 Flask 并尝试创建一个网络应用程序 它接受学生的姓名和分数 查找所有分数的总和并在表格中显示内容 但总数总是显示为0 代码如下 标记总计 py from flask import Flask render template