2017-01-18 14 views
0

まず、このエラーを検索してみて、それらの人が言ったことをすべて試しましたが、それは私のためにはうまくいかないでしょう。400 Bad Request 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> 


私は同様のレジスタページを持っているが、それが正常に動作し、それはDBにユーザーを追加します。

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

そしてフォームを送信場合、今お使いのフォームアクションであなたがaction={{url_for('index')}}を追加することができます。

+0

"すべての人が言った*"彼らは誰ですか、彼らは何を言いましたか?そして、提案された解決策については何が正しく機能しませんでしたか?(まだ400エラーが出ますか?これらの詳細を提供することで、あなたが何を持っているのか、まだ試していないのかを確認するのに役立ちます。 – Tagc

+0

'login'の先頭に' print(request.form) 'を置き、' username'と 'pass'が入っているかどうか確認してください。そうでない場合は、 'enctype =" multipart/form-data "'を削除してみてください。 –

+0

エラーの詳細なスタックトレースを取得するには、 'appbuild ['DEBUG'] = True'を試してください – Rohanil

答えて

0

あなたのHTMLフォームは、ログインビューでフォームの値を取得しようとしているためloginビューでレンダリングする必要があります。

0

私はそれを修正しました。ログインインデックスの下にif request.method == 'POST'を含める必要がありました。どのように私はこれ以前に来ていないのか分かりません、私はタイプする機会がなかったときに私がフォームから何かを要求していたことは意味があります。

ありがとうございました。

関連する問題