400 Bad Request Flask

时间:2017-01-18 08:14:14

标签: python flask

首先,我搜索了这个错误,尝试了那些家伙所说的一切,但这对我不起作用。

所以,基本上,我有一个登录表单,我甚至无法访问该页面,因为它给我400错误请求错误。

我的烧瓶代码:

@app.route('/', methods=['POST', 'GET'])
def login():
    users = mongo.db.users
    login_user = users.find_one({'name' : request.form['username']})

    if login_user:
        if bcrypt.hashpw(request.form['pass'].encode('utf-8'), login_user['password'].encode('utf-8')) == login_user['password'].encode('utf-8'):
            session['username'] = request.form['username']
            return redirect(url_for('index'))

    return 'Invalid username/password combination'

我的HTML表单:

<div class="container">
<div class="row">
    <div class="col-md-4 col-md-offset-4">
        <form method=POST action="{{ url_for('login') }}" enctype="multipart/form-data">
            <div class="form-group">
                <label for="exampleInputEmail1">Username</label>
                <input type="text" class="form-control" name="username" placeholder="Username">
            </div>
            <div class="form-group">
                <label for="exampleInputPassword1">Password</label>
                <input type="password" class="form-control" name="pass" placeholder="Password">
            </div>
            <button type="submit" class="btn btn-primary btn-block">Log In</button>
        </form>
        <br>
    </div>
</div>


我有一个类似的注册页面,但工作正常,它将用户添加到数据库。

2 个答案:

答案 0 :(得分:1)

我修好了。我必须在登录索引下包含if request.method == 'POST'。不知道我之前怎么没有这样做,当我甚至没有机会输入时,我从表格中请求某些东西是有道理的。

谢谢大家。

答案 1 :(得分:0)

您的html表单应该由login视图呈现,因为在您的登录视图中,您正在尝试获取表单值:

@app.route('/', methods=['POST', 'GET'])
def login():
    ...
    return render_template('your_htmlform.html')

现在,在您的表单操作中,如果提交了表单,则可以添加action={{url_for('index')}}