【问题标题】:Flask: How to show data clearly from databaseFlask:如何清楚地显示数据库中的数据
【发布时间】:2021-04-15 04:52:39
【问题描述】:

我使用 Flask 和 Firebase 作为数据库。

我想显示数据库中的 7 个变量,我做到了,但不是我想要的方式。

当我从数据库中获取数据时,我的屏幕如下所示:

我试图这样显示: 没有'{}'这是我的代码:这是routes.py

@app.route('/satis', methods=['GET', 'POST'])
def satis():
    if (request.method == 'POST'):
        sehir=request.form['il']
        yas=request.form['yas']
        id=request.form['id']
        kat=request.form['kategori']
        gun=request.form['satisgunu']
        cins=request.form['cinsiyet']
        tarz=request.form['satistarzi']
        db = firebase.database()
        db.child("names").push({"sehir": sehir,"yas":yas,"id":id,"kat":kat,"gun":gun,"cins":cins,"tarz":tarz})
        todo = db.child("names").get()
        to = todo.val()
        return render_template('satis.html', t=to.values())
    return render_template('satis.html')

这是 satis.html

<div class="container-fluid">
        {% for l in t %}
            <ul class="list-group">
                <li class="list-group-item">
                    <h4>{{l}}</h4>
                </li>
            </ul>
        {% endfor %}
    </div>
{% endblock %}

【问题讨论】:

  • 也许更好地将其作为字典发送-不使用.values()-稍后使用{% for key, val in t.items() %} {{key}}:{{val}} {% endfor %}-它只需要在元素之间添加,(但不是在最后一个元素之后-可能使用@987654330 @ 或类似的东西)。或者,如果您需要它作为模板中的单个字符串,则可以在发送到模板之前将其格式化为单个字符串

标签: python flask jinja2


【解决方案1】:

您可以在代码中使用for-loop、f-stringjoin() 将每一行转换为字符串

data = [
    {'cins': 'kadin', 'gun': 'carsambra', 'id': '1', 'kat': 'cantra', 'sehir': 'izmir', 'tarz': '7', 'yas': '22'},
    {'cins': 'kadin', 'gun': 'pazartesi', 'id': '1', 'kat': 'cantra', 'sehir': 'ankara', 'tarz': '5', 'yas': '18'},
]

new_data = []

for row in data:
    text = ', '.join(f'{key}:{val}' for key, val in row.items())
    new_data.append(text)
    print(text)

结果

cins:kadin, gun:carsambra, id:1, kat:cantra, sehir:izmir, tarz:7, yas:22
cins:kadin, gun:pazartesi, id:1, kat:cantra, sehir:ankara, tarz:5, yas:18

现在您可以将new data 发送到模板。


或者您也可以尝试在 template 中执行相同操作,同时使用 for-loop、row.items()key,val 以及 loo.last 在最后一项之后跳过 ,

from flask import Flask, render_template_string

app = Flask(__name__)

@app.route('/')
def inder():

    data = [
        {'cins': 'kadin', 'gun': 'carsambra', 'id': '1', 'kat': 'cantra', 'sehir': 'izmir', 'tarz': '7', 'yas': '22'},
        {'cins': 'kadin', 'gun': 'pazartesi', 'id': '1', 'kat': 'cantra', 'sehir': 'ankara', 'tarz': '5', 'yas': '18'},
    ]

    return render_template_string("""
    {% for row in data %}
        <ul class="list-group">
            <li class="list-group-item">
                <h4>{% for key, val in row.items() %}{{key}}:{{val}}{{ ", " if not loop.last }}{% endfor %}</h4>
            </li>
        </ul>
    {% endfor %}
    """, data=data)

app.run(debug=True)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-19
    • 2017-09-20
    • 1970-01-01
    • 2016-03-13
    • 2018-01-15
    • 1970-01-01
    相关资源
    最近更新 更多