首先,我搜索了这个错误,尝试了那些家伙所说的一切,但这对我不起作用。
所以,基本上,我有一个登录表单,我甚至无法访问该页面,因为它给我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>
我有一个类似的注册页面,但工作正常,它将用户添加到数据库。
答案 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')}}
。