gpt4 book ai didi

python - 使用 Flask 格式化结果页面

转载 作者:行者123 更新时间:2023-11-28 02:22:04 25 4
gpt4 key购买 nike

我是 python 和 flask 的初学者。我有这个用 python 编写的简单应用程序(容器填充器),它接受一个数字作为输入(茶匙)并返回一个元组列表。

到目前为止,我已经能够使用 flask 正确格式化初始表单,以便使用一些 html 和 css 来“很好地”显示。当输入一个数字并提交时,它只会清楚地显示一个元组列表。 Flask 代码如下所示:

from flask import Flask, request, render_template

from container_filler import ContainerFiller

app = Flask(__name__)

@app.route('/', methods=['GET'])
def form():
return render_template('index.html')

@app.route('/submit', methods=['POST'])
def submit():
return str(ContainerFiller().calculate(int(request.form['teaspoons'])))

我现在想做的是根据返回的str,我想改变背景颜色,也许添加图标。

例如,如果返回值为 [('gallon', 42)],我希望用蓝色填充的整个页面来表示加仑。我一直在查看有关他们通常如何使用 Flask 的教程和其他人的代码,但我无法将其转化为我的代码。到目前为止,我已经尝试过类似的方法但没有效果:

flask 代码:

@app.route('/submit', methods=['POST']
def submit():
a = str(ContainerFiller().calculate(int(request.form['teaspoons'])))
for c,d in a:
if c == 'gallon':
return render_template('some.html')
else:
return a

但这只会给我一个“内部服务器错误”,所以我认为这不是一种合法的方式。但我完全不确定如何进行。

*编辑

Traceback (most recent call last):
return self.view_functions[rule.endpoint](**req.view_arg
File "/home/James/Documents/Container/service.py", line 17, in submit
for c, d in a:
ValueError: not enough values to unpack (expected 2, got 1)

最佳答案

如果您的方法 ContainerFiller().calculate 返回一个元组,您必须使用该元组作为参数呈现一个模板。

像这样

@app.route('/submit', methods=['POST']
def submit():
a = str(ContainerFiller().calculate(int(request.form['teaspoons'])))
return render_template('some.html', value=a )

并将模板引擎中的值与jinja一起使用并根据a的值改变样式!

所以基本上在你的 some.html 中,你应该有这个:

<div>
This is a text inside a div element.
We are still in the div element.
</div>

根据c的值改变syle:

<style>
div {

{% for c, d in value %}
{% if c == 'gallon' %}
background-color: lightblue;
{% elif c == 'avalue' %}
background-color: red ;
{% else %}
background-color: green;
{% endif %}
{% endfor %}

}

关于python - 使用 Flask 格式化结果页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48143581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com