我需要帮助打印对象字典作为html表

时间:2017-09-05 22:45:11

标签: python-3.x dictionary flask wtforms

我的烧瓶应用程序正在使用flask-wtf形式完美地收集数据。收集后

@home.route('/add-new', methods=['POST', 'GET'])
def newlist():
    return redirect( url_for('auth.login'))

    form = ShoppingList()
    if form.validate_on_submit():
        #insert to list
        item_id = len( shopping_lists ) + 1        
        shopping_list = ShoppingCart(session["email"], form.title.data, form.price.data, 
                                        form.quantity.data, item_id, form.description.data)
        addToDic(session["email"], shopping_list)
        result = shopping_lists
        flash("List saved okay")
        return render_template('home/dashboard.html', title="Dashboard", result = result)

    #Render the dashboard template on the /dashboard route    
    return render_template('home/newlist.html',form=form, title="Add new")

我的问题是如何将结果dic打印到flask模板中的表格中。这是模板代码

<h3>HOME</h3>
                  <p>{{ utils.flashed_messages() }}</p>                   
                    <table class="table table-bordered">
                        <thead>
                          <tr>
                            <th>Item name</th>
                            <th>price</th>
                            <th>quantity</th>
                            <th>description</th>
                          </tr>
                        </thead>
                        <tbody>
                          <tr>

                          </tr>                          
                        </tbody>
                      </table>  

非常感谢。请到达

1 个答案:

答案 0 :(得分:1)

你应该咨询jinja2 documentation,因为它写得非常好而且全面的知识来源和你想要做的事情是非常简单的任务,在那里很早就有解释。

这是一个有效的例子:

<强> app.py

from flask import Flask
from flask import render_template

app = Flask(__name__)

class MyObj(object):
    def __init__(self, name, price, quantity):
        self.name = name
        self.price = price
        self.quantity = quantity

@app.route('/')
def index():
    my_objects = [
        MyObj('I am a super-cool object!', 1000, 1),
        MyObj('I am a cooler object!', 2000, 2),
        MyObj('I am the coolest object!', 3000, 3),
    ]
    return render_template('index.html', my_objects=my_objects)

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

<强>的index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
    table, th, td {
        border: 1px solid black;
    }
    </style>
</head>
<body>
<table>
    <thead style="border: 1px solid black;">
    <tr>
        <th>Item name</th>
        <th>price</th>
        <th>quantity</th>
    </tr>
    </thead>
    <tbody>
    {% for ob in my_objects %}
    <tr>
        <td>{{ ob.name }}</td>
        <td>{{ ob.price }}</td>
        <td>{{ ob.quantity }}</td>
    </tr>
    {% endfor %}
    </tbody>
</table>
</body>
</html>

结果网页:
enter image description here