플라스크를 배우고 학생의 이름과 마크를 허용하고 모든 마크의 합계를 찾고 테이블에 표시하는 웹 앱을 만들려고했습니다. 그러나 합계는 항상 0
으로 표시됩니다.플라스크를 사용하여 jinja2 템플릿에서 숫자의 합을 찾습니다.
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)
student.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>
result.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>
코드는
mark_total.py 이하 주어진다
<html>
\t <head>
\t \t <title>Results</title>
\t </head>
\t <body>
\t \t <h1>ABC's results</h1>
\t \t <table border = 1>
\t \t \t <tr>
\t \t \t \t <td>Mathematics</td>
\t \t \t \t <td>100</td>
\t \t \t \t <td>100</td>
\t \t \t </tr>
\t \t \t <tr>
\t \t \t \t <td>chemistry</td>
\t \t \t \t <td>100</td>
\t \t \t \t <td>100</td>
\t \t \t </tr>
\t \t \t <tr>
\t \t \t \t <td>Physics</td>
\t \t \t \t <td>100</td>
\t \t \t \t <td>100</td>
\t \t \t </tr>
\t \t \t <tr>
\t \t \t \t <td>Total</td>
\t \t \t \t <td>0</td>
\t \t \t </tr>
\t \t </table>
\t </body>
</html>
누군가가 나에게이 문제를 해결하는 방법을 이해하는 데 도움시겠습니까 다음과 같이
출력의 HTML 소스는?
당신이 정말 템플릿의 계산을해야합니까를? 왜 이것을 'mark_total.py'에서 계산하고 결과를 템플릿에 전달합니까? –
예. 파이썬에서 변경 작업을 시도했는데 효과가있었습니다. 나는 그것을 템플릿으로 시험해보고 싶었다. –