如何使用Flask从数据库数据填充HTML字段

如何使用Flask从数据库数据填充HTML字段,flask,jinja2,flask-sqlalchemy,Flask,Jinja2,Flask Sqlalchemy,我想根据从另一个屏幕传递的字符串值,使用烧瓶炼金术从数据库中获取数据。但问题是,我的密码出现了400错误,我不知道我做错了什么 以下是获取我的数据的函数: def userToEdit(userVar): with session_scope() as s: userVname = s.query(tabledef.User).filter(tabledef.User.username==userVar).f

我想根据从另一个屏幕传递的字符串值,使用烧瓶炼金术从数据库中获取数据。但问题是,我的密码出现了
400错误
,我不知道我做错了什么

以下是获取我的数据的函数:

def userToEdit(userVar):
    with session_scope() as s:                                
        userVname = s.query(tabledef.User).filter(tabledef.User.username==userVar).first()  
        return(userVname)
以下是使用我的模板处理的函数:

# -------- Edit Users ---------------------------------------------------------- #
@app.route('/edituser/<string:userVar>', methods=['GET', 'POST'])
def edituser(userVar):
    userV = helpers.userToEdit(userVar)
    if session.get('logged_in'):
        if request.method == 'POST':
            password = request.form['password']
            if password != "":
                password = helpers.hash_password(password)
            email = request.form['email']
            helpers.change_user(password=password, email=email)
            return json.dumps({'status': 'Saved'})
        else:
            password = helpers.fetch_usernames.password
        user = helpers.userToEdit(userVar)
        pagename = "Edit User"        
        roles = ['Test1', 'Test2', 'Test3']
        mobile_roles = ['test1', 'test2', 'test3']
        states = ['Active', 'Non-active']
        return render_template('edituser.html', user=user, pagename=pagename, roles=roles, states=states, mobile_roles=mobile_roles)        
    return redirect(url_for('login'))
编辑用户-------------------------------------------#
@app.route('/edituser/',方法=['GET','POST'])
def edituser(userVar):
userV=helpers.userToEdit(userVar)
if session.get('logged_in'):
如果request.method==“POST”:
密码=请求。表单['password']
如果输入密码!="":
password=helpers.hash\u密码(password)
电子邮件=请求。表格['email']
帮助者。更改用户(密码=密码,电子邮件=电子邮件)
返回json.dumps({'status':'Saved'})
其他:
password=helpers.fetch\u usernames.password
user=helpers.userToEdit(userVar)
pagename=“编辑用户”
角色=['Test1'、'Test2'、'Test3']
移动_角色=['test1','test2','test3']
状态=[“活动”、“非活动”]
返回呈现模板('edituser.html',user=user,pagename=pagename,roles=roles,states=states,mobile\u roles=mobile\u roles)
返回重定向(url_用于('login'))
以下是我的模板中应填充的部分:

<div class="field">
            <p class="control has-icons-left">
              <input id="settings-user" class="input is-success" type="text" placeholder="{{user.username}}" readonly="readonly">
              <span class="icon is-small is-left">
                <i class="fa fa-user"></i>
              </span>
            </p>
          </div>
          <div class="field">
            <p class="control has-icons-left">
              <input id="settings-mail" class="input is-success" type="text" placeholder="{{user.email}}">
              <span class="icon is-small is-left">
                <i class="fa fa-envelope"></i>
              </span>
            </p>
          </div>
          <div class="field">
            <p class="control has-icons-left">
              <input id="settings-pass" class="input" type="password" placeholder="&#x2022&#x2022&#x2022&#x2022&#x2022">
              <span class="icon is-small is-left">
                <i class="fa fa-lock"></i>
              </span>
            </p>
          </div>

如果您询问错误,则会显示以下消息

werkzeug.exceptions.HTTPException.wrap..newcls:400坏 请求:KeyError:“密码”


现在我把一切都搞定了,有办法解决吗?因为我不知道从哪里开始。

您应该在输入字段中添加名称值,如下所示:

<input id="settings-pass" class="input" type="password" name='password' 
placeholder="&#x2022&#x2022&#x2022&#x2022&#x2022">
<input id="settings-mail" class="input is-success" type="text" name='email'
placeholder="{{user.email}}">


这没有改变什么,但感谢您抽出时间。您得到的密码=请求。表单['password']。因此,如果您的表单没有输入name password,您将看到该错误。这就是我要说的,我得到了相同的错误