【问题标题】:can`t get form name from html to python无法从 html 到 python 获取表单名称
【发布时间】:2020-06-13 08:20:52
【问题描述】:

我想在我的数据库中从用户个人资料页面to description column 添加description text,但是当我提交表单时没有任何反应,并且此列仍然为空。

登录后我可以在个人资料页面上获取id和email,但无法在我的profile method上获取description form

这是我的数据库结构

login method:

@app.route('/', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        email = request.form['email']
        password = request.form['password']


        cur = mysql.connection.cursor()
        cur.execute('SELECT * FROM users.data WHERE email = %s AND password = %s', 
                    (email, password))
        account = cur.fetchone()
        if account:
            session['loggedin'] = True
            session['id'] = account[0]
            session['email'] = account[3]
            return redirect(url_for('profile'))
        else:
            return render_template('error.html')

    return render_template('login.html')

profile method:

@app.route('/profile', methods=['GET','POST'])
def profile():
    if 'loggedin' in session:
        return render_template('profile.html', id=session['id'], email=session['email'])
    if request.method == 'POST':
        description = request.form['text']
        cur = mysql.connection.cursor()
        cur.execute('UPDATE users.data  SET description = %s WHERE id = ?', (description, session['id']))
        mysql.connection.commit()
        cur.close()
        return render_template('profile.html', id=session['id'], email=session['email'], description=description)
    else:
        return 'NO'

    return redirect(url_for('login'))

profile.html:

your session id is: {{ id }}
your session email is: {{ email }}
your session symptom is: {{ description }}

<form action="" method="post">
    <input type="text" name="text" class="form-control" placeholder="description">
    <button class="btn btn-primary">Add</button>
</form>

请帮忙。

【问题讨论】:

  • 我想你可能想要cur.execute('UPDATE users.data SET description = %s WHERE id = %s', (description, session['id'])) 注意%s,而不是?
  • @Nick,不幸的是,这没有帮助
  • 你确定这行description = request.form['text'] 正在正确获取数据吗?
  • @FooL,我在控制台中使用print(description) 进行了检查,但没有任何反应。那么,获取数据是不正确的,但问题是什么?为什么我收不到?
  • @abby 尝试将button 改为&lt;input type="submit"?

标签: html mysql python-3.x flask


【解决方案1】:

我找到了答案:

@app.route('/profile', methods=['GET','POST'])
def profile():
    if request.method == 'GET':
        if 'loggedin' in session:
            return render_template('profile.html', id=session['id'], email=session['email'])

    elif request.method == 'POST':
        description = request.form['description']
        print(description)
        cur = mysql.connection.cursor()
#       cur.execute('INSERT INTO users.data(description) VALUES (%s)', (description))       
        cur.execute('UPDATE users.data SET description = %s WHERE id = %s', (description, session['id']))
        mysql.connection.commit()
        cur.close()
        print(description)
        return render_template('profile.html', description=description)
    else:
        return 'NO'

    return redirect(url_for('login'))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 2010-09-19
    相关资源
    最近更新 更多