【发布时间】:2021-10-16 17:50:26
【问题描述】:
我正在尝试使用 sqlite 3 从我的 sql 数据库中获取用户,并在表单中显示名称以选择 2 并设置匹配项。但是,当我只通过我的第一个 jinja for 循环运行传递变量时,它会将第二个多选框留空。
我已经尝试过为两个循环传递相同的变量,并为每个循环传递一个不同的变量,而第二个仍然没有填充。
from flask import Flask
from flask import render_template
import sqlite3
con = con = sqlite3.connect('chess-test.db')
cur = con.cursor()
app = Flask(__name__)
@app.route('/')
def index():
users = cur.execute('''SELECT * FROM chess ORDER BY hcp ''')
return render_template("index.html", users=users)
@app.route('/game')
def game():
names = cur.execute('''SELECT * FROM chess ORDER BY name ''')
users = cur.execute('''SELECT * FROM chess ORDER BY name ''')
return render_template("game.html", names1=names, users=users)
我的 jinja 模板看起来像这样。
<body>
<div class="container">
<div class="text-center">
<div class="display-4">Hvem skal spille?</div>
</div>
<div class="form-group">
<select multiple class="form-control">
{% for item in names1 %}
<option>{{ item[0] }}</option>
{% endfor %}
</select>
<label for="exampleFormControlSelect2">mod</label>
<select multiple class="form-control">
{% for item in users %}
<option>{{ item[0] }}</option>
{% endfor %}
</select>
</div>
</div>
这是生成的页面。
【问题讨论】:
-
可以查看用户是否收到数据。并检查用户值类型(是字典还是列表?)