【问题标题】:How to populate HTML fields from database data using Flask [duplicate]如何使用 Flask 从数据库数据中填充 HTML 字段 [重复]
【发布时间】:2019-05-22 12:48:54
【问题描述】:

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

这是获取我的数据的函数:

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'))

这是我的模板中应该填充的部分:

<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:'密码'

既然我已经解决了所有问题,有没有办法解决这个问题?因为我不知道从哪里开始。

【问题讨论】:

    标签: flask jinja2 flask-sqlalchemy


    【解决方案1】:

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

    <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}}">
    

    【讨论】:

    • 这没有任何改变,但感谢您抽出宝贵时间。
    • 你得到密码 = request.form['password']。因此,如果您的表单没有输入名称密码,您将看到该错误。
    • 这就是我的意思,我得到了同样的错误
    猜你喜欢
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多