2016-06-18 33 views
0

私はこの簡単なフォームデータをPOSTメソッドを使用してMySQLデータベースに送信しようとしています。同じエラー "メソッドが許可されていません"、私は何が間違っているのか分からない。ここで私を助けてください。Flask - 405、メソッドが許可されていません

HTMLコード:

<form role="form" action='/updateabbprof' method="POST"> 

      <div class="form-group"> 
      <label class="control-label">About Us</label> 
      <textarea class="form-control" name="updabt" id="editabt"></textarea> 
      </div> 

     <div class="form-group"> 
     <button id="aupdate" type="submit" class="btn btn-primary">Save</button> 
     </div> 
     </form> 
</div> 

フラスコ:

app.route('/updateabbprof', methods = ['POST']) 
def updateaprof(): 
     try: 

       if session.get('user'): 
        _userid = session.get('user') 
        _userabt = str(request.form['updabt']) 


        #if _userid or _username or _email or _phone: 
        con = mysql.connect() 
        cursor = con.cursor() 
        cursor.execute("""UPDATE user_signpp SET user_abt = %s WHERE Id =%s""",(_userabt,_userid)) 
        con.commit() 
        cursor.close() 
        con.close() 
        con = mysql.connect() 
        cursor = con.cursor() 
        cursor.execute("""SELECT * FROM user_signpp WHERE Id = %s""",(_userid)) 
        con.commit() 
        datanew = cursor.fetchall() 
        session['msg'] = list(datanew[0]) 
        cursor.close() 
        con.close() 
        return redirect("/userprofile") 
       else: 
        return redirect('/') 
     except Exception as e: 
       return render_template('error.html', error = str(e)) 

USERPROFILEルート:

@app.route('/userprofile', methods = ['GET','POST']) 
def userprofile(): 
     try: 
      if session.get('user'): 

         return render_template('profile.html', msg = session.get('msg')) 
      else: 
         return redirect('/') 
     except Exception as e: 
      return render_template('error.html', error = str(e)) 

答えて

0

/userprofileによって受け入れられている方法を確認してください。おそらく、このビュー機能はポストリクエストだけを受け入れるように設定されていますか? updateaprof()から

リダイレクトは、ブラウザがGET要求を受け入れない場合、あなたが見ていることを許可されていない405の方法を返します。新しい場所/userprofileGET要求を発行するようになります。

これが問題の場合、サポートされているメソッドにGETを追加し、ビュー内でGET要求を処理することで解決できます。

/にも同様の問題がありますが、「インデックス」URLでGETリクエストをサポートしないことは珍しいですが、

+0

上記のメソッドuserprofle()を確認してください。何か間違っていますか? –

+0

@LOKESHTIWARI:mmmおそらくそうではありません。 '/'もチェックしましたか?また、updateaprof()の 'SELECT'クエリは間違っています。タプルを' execute() 'に渡す必要があります。このコードは例外を引き起こすので、 '/ userprofile'へのリダイレクトはおそらく起きていないでしょうし、おそらく問題は本当に'/'にありますか?最後に、クエリ間のカーソルや接続を閉じる必要はなく、 'SELECT'の後にコミットする必要もありません。 – mhawke

+0

サーバを再起動した後、私はコードをもう一度書きました..そして今は動作しています。また、私はカーソル、接続を削除し、クエリをb/wをコミットします。私を助けるために高齢者:) –

関連する問題