python - 如何将查询作为 json 格式传递给 render_template?
问题描述
我试图将字典列表表示为 json 输出已经有一段时间了。
这是我的model.py:
class User(db.Model):
"""
class to create users
"""
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(20), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
def to_dict(self):
return dict([(k, getattr(self, k)) for k in self.__dict__.keys() if not k.startswith("_")])
在 view.py 中:
@app.route('/user', methods=['GET', 'POST'])
def search():
datas = User.query.all()
results = []
for result in datas:
results.append(result.to_dict())
if request.method == 'POST':
query = request.form['Search']
return redirect((url_for('search_results', query=query)))
return render_template('search_results.html', results=results)
在 search.html 中:
{% extends "layout.html" %}
{% block content %}
{% for result in results %}
<li>{{ result }}</li>
{% endfor %}
{% endblock content %}
问题:
我的问题是,如何在我的 html 模板中将字典列表显示为 json 格式。
我知道return jsonify(results)
我可以有一个包含 json 格式列表的路线,但是如何将它置于类似return render_template('search_results.html', results=json.dumbs(results))
期待:
我期待类似的东西:
[
{'id': 1,
'username ': JackS,
'email':'demo@gmail.com'},
{'id': 2,
'username ': RossS,
'email':'x@gmail.com'},
....
]
解决方案
向模型添加toJSON
方法User
def toJSON(self):
return json.dumps(self, default=lambda o: o.__dict__, sort_keys=True)
现在您可以使用json.dumps
从查询集结果创建 JSON 字符串格式
return render_template('search_results.html', results=json.dumps(results)
推荐阅读
- networking - ABAP AL11 目录不可见
- python - 在 CLI 中运行以及作为 os.system() 的参数时,相同的命令给出不同的结果
- pex - Intellitet Pex 参数化模拟
- flutter - 如何在 Flutter 中获取带有月视图的水平日历?
- java - Spring Security 如何在 SHA256 + salt 中加密传入的密码并将结果与数据库中的加密密码进行比较?
- apache-spark - pyspark 或 sparksql 中的日期转换
- javascript - 将参数传递给 Algolia React Instant SearchBox
- excel - 将 Excel 范围粘贴到 Outlook 电子邮件中
- nextflow - nextflow:根据参数更改部分脚本
- r - 如何使用 R 对具有求和的复杂函数执行非线性回归?