如何在Flask / Python中使用request.form来获取变量textarea名称?

时间:2016-09-05 08:39:10

标签: python html flask

在我的HTML模板中,我已将以下<textarea>添加到烧瓶中以进行循环:

{% for message in messageList %}
    <form action="/comment/{{ message['id'] }}" method='POST' id='createComment{{ message["id"] }}'>
        <textarea name='comment{{ message["id"] }}' id='comment{{ message["id"] }}' class='postComment'></textarea>
        <button form='createComment{{ message["id"] }}' formaction="/comment/{{ message['id'] }}" formmethod='post' type='submit' class="ui-button ui-corner-all ui-widget createCommentButton">Post a comment</button>
    </form>
{% endfor %} 

将Flask与Python一起使用,我试图抓住动态生成的<textarea>

的值

(在上面的示例中,如果id = 38,则名称将显示为name="comment38"

我无法正确使用请求表单来获取此数据,任何人都可以提供帮助吗?

下面是我处理路线的Python代码:

@app.route('/comment/<id>', methods=["POST"])
def createComment(id):
    query = 'INSERT INTO comments (message_id, user_id, comment, created_at, updated_at) VALUES (:message_id, :user_id, :comment, NOW(), NOW());'
    data = {
        'message_id' : id,
        'user_id' : session['loggedInUser'],
        'comment' : request.form["comment" & id]
    }
    mysql.query_db(query, data)
    flash('Comment has been created!')
    return redirect('/')

如上所示,有谁知道我应该如何在这种情况下适当地格式化request.form?谢谢!

2 个答案:

答案 0 :(得分:1)

应为request.form["comment" + id]

更好的是,避免关键错误:

request.form.get("comment" + id, 'oops, bad id')

答案 1 :(得分:0)

我通过创建一个新变量来解决这个问题:

form = request.form

并将我的字典值设置为:

'comment' : form["comment" + id]

[ EDIT ]我已经发誓我已经尝试了request.form['comment' + id],因为@GAEfan注意到了,但我无法让它工作(我必须要还有别的事情发生了,因为现在绝对正常工作!)接受了答案!