[英]Flask, SQL, HTML: How to use a variable as a key for INSERT statement
我有一個站點,用戶可以將消息發布到牆上並在評論主題中回復消息。 我無法弄清楚在提交評論表單時如何將評論與消息相關聯,以便將正確的message_id(外鍵)插入數據庫的評論表中。
我在HTML中用for循環顯示來自數據庫的消息和注釋,並且在每個消息/注釋組之后,有一種形式可以路由到'/ post_comment':
{% for message in messages %}
<div>
<h3>{{ message['first_name'] }} {{ message['last_name'] }}</h3>
<h3>{{ message['created_at'] }}</h3>
<p>{{ message['message'] }}</p>
{% for comment in comments %}
{% if message['message_id'] == comment['message_id'] %}
<p>{{ comment['comment'] }}</p>
{% endif %}
{% endfor %}
<form class="comments" action="/post_comment" method="POST">
<h4>Reply</h4>
<textarea id="post_comment" type="textarea" name="comment"></textarea>
<input class="submit" type="submit" value="Post">
</form>
</div>
{% endfor %}
/ post_comment路由如下所示:
@app.route('/post_comment', methods=['POST'])
def post_comment():
query = "INSERT INTO comments (user_id, message_id, comment, created_at, updated_at) VALUES (:user_id, :message_id, :comment, NOW(), NOW())"
data = {
'user_id': session['id'],
'message_id': 10, <<<<<<<<<<<<<<<<<<<<<<<<<<<< WHAT GOES HERE?
'comment': request.form['comment']
}
mysql.query_db(query, data)
return redirect('/wall')
所有這些工作都很好,但是如您所見,在/ post_comment路由中,我將“ message_id”臨時硬編碼為整數(10),因此每個注釋都被記錄為對message_id 10的答復。提交相關消息的評論表單后,選擇上一條消息的message_id。
如何讓表單知道它屬於哪條消息,然后如何將該信息傳遞給我的路線中的查詢?
最好將message_id設置為自動增量。
如果不能,請使用MAX獲取最后一個ID,然后將其增加1。這不是最干凈的,但是可以使用。 SELECT MAX(message_id) AS last_message_id FROM comments;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.