我已经为我正在使用 Flask 制作的投票应用程序创建了一个数据库模式,如下所示:
CREATE TABLE questions (
question_id integer primary key autoincrement,
questiontext string not null
);
CREATE TABLE choices (
choice_id integer primary key autoincrement,
choicetext string not null,
question_id integer,
FOREIGN KEY(question_id) REFERENCES questions(question_id)
);
但我不知道我应该如何询问(在 HTML 模板中)并将选择插入数据库。我的“show_polls”和“add_polls”在下面
@app.route('/')
def show_polls():
cur = g.db.execute('SELECT questiontext, choicetext FROM questions q JOIN choices c ON c.question_id = q.question_id')
polls = [dict(question=row[0], choices=(c for c in row[1:])) for row in cur.fetchall()]
return render_template('show_polls.html', polls=polls)
@app.route('/add', methods=['POST'])
def add_poll():
if not session.get('logged_in'):
abort(401)
g.db.execute('insert into questions (questiontext) values (?)',
[request.form['questiontext']])
for i in range(4): #4 choices
g.db.execute('insert into choices (choicetext, question_id) values(?, ?)',
[request.form['choicetext'], 4])
g.db.commit()
return redirect(url_for('show_polls'))
但这不起作用。我不确定我的视图是否错误或 HTML 布局部分。任何人都可以帮我解决这个问题吗?
这是添加投票的 HTML 部分:
{% for i in range(4) %}
<dt>Choices:
<dd><input type=text name=choicetext>
{% endfor %}