Flask中的“ TypeError:字符串索引必须为整数”

时间:2019-08-21 04:32:22

标签: python mysql flask jinja2

我是Python Web开发的初学者。我正在练习UPDATE操作。当我尝试从文本框中获取值并将其存储在python中的变量中时,发生了问题。我写的代码如下所示:

mysql> desc sample;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| ID    | int(11)     | NO   | PRI | NULL    | auto_increment |
| NAME  | varchar(30) | YES  |     | NULL    |                |
| EMAIL | varchar(70) | YES  |     | NULL    |                |
| PHONE | varchar(10) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+

这是我的数据库

{% for col in students %}
<input type="hidden" class="form-control" name="id" placeholder="Id" value="{{col.0}}" />
<input type="text" class="form-control" id="n" name="name" placeholder="Name" value="{{col.1}}" />
<input type="email" class="form-control" id="e" name="email" placeholder="Email" value="{{col.2}}" />
<input type="tel" pattern="[0-9]{10}" class="form-control" name="phone" id="p" placeholder="Phone" value="{{col.3}}" />
@app.route('/update', methods=['POST','GET'])
def update():
    if request.method == 'POST':

        id_val = request.method['id']
        name = request.form['name']
        email = request.form['email']
        phone = request.form['phone']

        #Updating values
        cur = mysql.get_db().cursor()
        cur.execute('UPDATE sample SET name=%s, email=%s, phone=%s WHERE id=%s',(name,email,phone,id_val))
        flash("Data Updated Successfully !!")
        mysql.get_db().commit()
        return redirect(url_for('home'))

这是我的Python代码。 此行中出现 id_val = request.method ['id'] 。告诉 TypeError:字符串索引必须为整数

这里需要纠正什么?请帮帮我

1 个答案:

答案 0 :(得分:1)

您正在使用

request.method['id']

其值为'POST'['id']

request.method给您'POST'字符串,['id']尝试使用索引对其进行切片。

由于'id'不是索引,它可以告诉您-

  

TypeError:字符串索引必须是整数。

尝试将request.method['id']更改为request.form['id']。这应该起作用。