gpt4 book ai didi

python - render_template 无法 jsonify 对象

转载 作者:太空宇宙 更新时间:2023-11-04 03:55:19 26 4
gpt4 key购买 nike

我并没有做很多网络开发,所以我在这个领域的知识非常基础。但是,我必须使用 pythonflask 编写一个简单的网络应用程序。

在这个应用程序中,我有一个看起来像这样的简单类:

class Task(object):       
def __init__(self, id, title):
super(Task, self).__init__()
self.id = id
self.title = title

可以假设id是一个整数title是一个(unicode)字符串

在一个 View 函数中,我想渲染一个传递 Task objectslist 的模板,如下所示:

@app.route('/tasklist')
@login_required
def tasklist():
tasklist = [
Task(1, u"Task 1"),
Task(2, u"Task 2"),
Task(3, u"Task 3"),
Task(4, u"Task 4")
]
return render_template( "tasklist.html", tasklist=tasklist)

调用 View 函数时,我收到以下错误消息:

TypeError: <models.Task object at 0x103861210> is not JSON serializable

当我浏览互联网时,我看到了很多示例,它们使用 render_template 将对象列表传递给 View 。所以我想知道我错过了什么?我的对象只使用基本数据类型。我是否必须重载特定函数?

使用简单字符串列表(而不是类实例)调用 render_template 效果很好。

我知道,这是一个很基础的问题,但我暂时没有找到满意的答案。

最佳答案

我不太了解 flask,但它似乎需要 JSON 可序列化对象,所以这就是我的想法。

通常对象不是 JSON 可序列化的。您必须将其转换为 JSON 可序列化对象,例如字典:

class Task(object):       
def __init__(self, id, title):
self.id = id
self.title = title

def as_dict(self):
return {
"id": self.id,
"title": self.title
}

然后

tasklist = [
Task(1, u"Task 1"),
Task(2, u"Task 2"),
Task(3, u"Task 3"),
Task(4, u"Task 4")
]
tasklist = [task.as_dict() for task in tasklist]
return render_template( "tasklist.html", tasklist=tasklist)

关于python - render_template 无法 jsonify 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18868915/

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