【问题标题】:python - how to render a firebase dict in flaskpython - 如何在烧瓶中呈现firebase dict
【发布时间】:2017-03-18 08:30:35
【问题描述】:

我正在试验Pyrebase,试图从 Firebase 中提取一些数据并将它们呈现在烧瓶中。这就是我的数据在 firebase database screenshot

中的样子

在flask-python中,像这样检索数据并传递给render_template:

@app.route('/')
def home():
all_post = db.child("post").get().val()
for i, (key, value) in enumerate(all_post.items()):
    dict = value
    print(dict)
return render_template('home.html', post=dict)

此时,dict从上面的print语句看是这样的

{'postTitle': 'Second title', 'postBody': 'Second tyext'}
{'postTitle': 'Title of my post', 'postBody': 'Body of my post'}

在我的烧瓶/神社模板中,我正在循环 dict 试图呈现类似于博客文章的数据,我试图在数据库中显示每个博客标题及其正文

{% for key, value in dict.items() %}
            <h2>{{ key }}</h2>
            <P>{{ value }}</P>
    {% endfor %}

我在尝试像上面那样渲染时遇到的错误是:

TypeError: descriptor 'items' of 'dict' object needs an argument

最好的方法是什么,或者我哪里出错了?

【问题讨论】:

    标签: python dictionary firebase flask firebase-realtime-database


    【解决方案1】:

    TypeError: 'dict' 对象的描述符 'items' 需要一个参数

    错误是因为您尝试执行dict.items()。就像尝试在内置字典数据结构上调用 items() 而不是您创建的名称一样。问题是dict 在模板中没有被称为dict。在模板中称为post

    如果你看看:

    render_template('home.html', post=dict)
    

    你说的是post=dict。从而改变:

    {% for key, value in dict.items() %}
    

    进入:

    {% for key, value in post.items() %}
    

    但是它只呈现了一篇文章,而我在数据库中有两篇文章

    这是因为您在循环浏览帖子,始终将当前帖子分配给dict。所以你总是会看到最后一个帖子。

    相反,您可以这样做:

    posts = []
    for i, (key, value) in enumerate(all_post.items()):
        posts.append(value)
        print(value)
    return render_template('home.html', posts=posts)
    
    {% for post in posts %}
        {% for key, value in post.items() %}
            <h2>{{ key }}</h2>
            <P>{{ value }}</P>
        {% endfor %}
    {% endfor %}
    

    【讨论】:

    • 非常感谢,这很愚蠢,我改为 post.items() 但是它只呈现了一个帖子,我在数据库中有两个帖子。
    • 我猜我的循环还是不对,请你看看
    • 您更新的答案回答了我的问题,我已将其标记为已回答。非常感谢!
    猜你喜欢
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-13
    • 2016-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多