python - 如何修复 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.
解决方案
HTML 表单的action
属性需要与 Flask 路由的名称相匹配。
您的页面正在向 url '/' 发送 POST,因此它没有到达您的路线,即路径 '/insertpage'
你应该把它改成<form action="/insertpage" method="POST">
推荐阅读
- mysql - Node js,将Json数据转成Html格式
- pdo - 如何构造一个合适的 foreach()
- python - 如何使用python cgi显示背景图像
- php - MySQL-添加休息后每天开两次店的营业时间
- android - Android 文本识别 - 限制文本识别器
- android - Google Places Android EditText 和 ListView
- scala - reduceByKeyAndWindow 在 Spark 流中如何工作?
- javascript - JavaScript - 使用 AppendChild() 向表中添加新行
- graphql - 在赛普拉斯的上下文中:如何等待 Apollo 客户端 Graphql 请求
- c# - 过滤导航属性 EF 核心