烧瓶 - 405,方法不允许

时间:2016-06-18 07:04:58

标签: python mysql python-2.7 flask flask-admin

我正在尝试使用POST方法将这个简单的表单数据发送到MySQL数据库。但同样的错误“方法不允许”,我不知道这有什么问题。请帮帮我。

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 route:

@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)) 

1 个答案:

答案 0 :(得分:0)

检查/userprofile接受的方法。可能此视图功能设置为仅接受发布请求?

来自updateaprof()的重定向将导致浏览器向新位置GET发出/userprofile请求,如果它不接受GET请求,则会返回405方法不允许你看到。

如果这是问题,您可以通过将GET添加到支持的方法并在视图中处理GET请求来解决问题。

/也可能存在类似问题,但不支持“索引”URL上的GET请求是不常见的。