首页 > 解决方案 > 如何修复 Python Flask 应用程序中的“方法不允许”错误

问题描述

我的 Python Flask 应用程序中有一个已定义的路由(运行良好)。

@app.route('/insertpage', methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
        companyname = request.form['companyname']
        username = request.form['username']
        userpass = request.form['password']
        new_company= Grocery(companyname=companyname,
                            username=username, userpass=userpass)
        try:
            db.session.add(new_company)
            db.session.commit()
            return render_template('index.html', data=Todos.query.all())
        except:
            return "The problem occurred while adding a new company...."

    else:
        groceries = Grocery.query.order_by(Grocery.created_at).all()
        return render_template('index.html', groceries=groceries)

我正在我的HTML页面中收集信息:

 <form action="/" method="POST">
    <div class="form-row">
      <div class="col-sm-3 my-1">
        <label for="newStuff" class="sr-only">New company:</label>
        <input type="text" class="form-control" name="companyname" id="newStuff" placeholder="Enter name of new company">
      </div>
      <div class="col-sm-3 my-1">
        <label for="newStuff" class="sr-only">New username:</label>
        <input type="text" class="form-control" name="username" id="newStuff" placeholder="Enter username...">
      </div>
      <div class="col-sm-3 my-1">
        <label for="newStuff" class="sr-only">New password:</label>
        <input type="text" class="form-control" name="password" id="newStuff" placeholder="Enter password...">
      </div>
      <div class="col-sm-3 my-1">
        <button type="submit" class="btn btn-primary btn-block">Add</button>
      </div>
    </div>
  </form>

经过几次成功的CRUD操作后,我面临以下错误(即使我在我的定义'POST'中定义'GET'了)。

Method Not Allowed
The method is not allowed for the requested URL.

标签: pythonsqliteflask

解决方案


HTML 表单的action属性需要与 Flask 路由的名称相匹配。

您的页面正在向 url '/' 发送 POST,因此它没有到达您的路线,即路径 '/insertpage'

你应该把它改成<form action="/insertpage" method="POST">


推荐阅读