2017-01-18 5 views
0

Прежде всего, я искал эту ошибку, пробовал все, что сказали ребята, но это не сработает для меня.400 Bad Request Flask

Итак, у меня есть форма входа в систему, и я даже не могу получить доступ к странице, так как она дает мне ошибку 400 Bad Request.

Мой колба Код:

@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

«Все, что сказали ребята» «Кто такие« эти парни », что они сказали и что точно не работало над предлагаемыми ими решениями (по-прежнему получают 400 ошибок или что-то еще?)? Предоставление этих подробностей поможет людям узнать, что у вас есть или еще не пробовал. – Tagc

+0

Поместите 'print (request.form)' в начале 'login' и проверьте, находятся ли в нем' username' и 'pass'. Если нет, попробуйте удалить «enctype =» multipart/form-data ». –

+0

Попробуйте с помощью 'app.config ['DEBUG'] = True', чтобы получить более подробный стекtrace ошибки – Rohanil

ответ

0

Ваш HTML форма должна быть визуализация с login зрения, потому что с вашей точки зрения входа вы пытаетесь получить значение формы:

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

И теперь в вашей форме действия вы можете добавить action={{url_for('index')}}, если форма будет отправлена.

0

Я исправил его. Я должен был включить if request.method == 'POST' под индекс входа. Не знаю, как я не пришел к этому раньше, имеет смысл, что я просил что-то из формы, когда у меня даже не было возможности напечатать.

Спасибо всем.