Flask+SQLAlchemy+Jinja2中去除项目编号的元组括号与逗号方法
解决自动补全项目编号格式问题
问题根源在于:使用with_entities(Element.ProjectNumber).distinct()查询返回的是元组对象列表(例如[(24403,), (24404,)]),模板中直接输出元组就会显示成(24403,)这类带括号和逗号的格式。
下面提供两种可行的修复方案:
方案一:后端处理(推荐)
修改app.py中的查询逻辑,直接把元组转换成纯数字列表:
@app.route("/", methods=["POST", "GET"]) def basicTemplate(): # 从查询结果的元组中提取项目编号,得到纯数字列表 project_number = [item[0] for item in Element.query.with_entities(Element.ProjectNumber).distinct()] if request.method == "GET": return render_template('search.html', navigation=project_number)
方案二:前端模板处理
如果不想改动后端代码,直接在search.html的循环里提取元组的第一个元素:
<script> $( function() { var project = [ {% for test in navigation %} "{{test[0]}}", {% endfor %} ]; $( "#project_code" ).autocomplete({ source: project }); } ); </script>
两种方案都能让自动补全栏显示纯数字格式的项目编号(如24403),推荐方案一,因为数据格式处理放在后端更符合职责划分,前端只需负责渲染展示。
内容的提问来源于stack exchange,提问作者Viktoria Robinson
相关产品推荐
相关产品推荐

