【发布时间】:2017-02-09 01:13:46
【问题描述】:
我有一个网站,用户可以在其中将消息发布到墙上并在评论线程中回复消息。我不知道在提交评论表单时如何将 cmets 与消息关联,以便将正确的 message_id(外键)插入到数据库中的 cmets 表中。
我在我的 html 中使用 for 循环显示来自数据库的消息和 cmets,并且在每个消息/评论组之后有一个路由到“/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。
如何让表单知道它属于哪条消息,然后如何将该信息传递给路由中的查询?
【问题讨论】:
标签: python sql sqlalchemy