使用Flask格式化结果页面

时间:2018-01-08 02:37:23

标签: python css html5 python-3.x flask

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

到目前为止,我已经能够使用flask正确格式化初始表单以便很好地显示'使用一些HTML和CSS。当一个数字输入并提交时,它只是显示一个元组列表。烧瓶代码如下所示:

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,我想更改背景颜色,也许添加图标。

例如,如果返回值为[('加仑',42)],我希望加仑用填充蓝色的整页表示。我一直在查看教程和其他人的代码,了解他们通常如何使用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)

1 个答案:

答案 0 :(得分:0)

如果您的方法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 %}

}