尽管使用 POST,但不允许使用 Flask- 方法
Flask- method not allowed despite using POST
我试图在 raspberry pi 上创建一个基本登录页面,但是当我尝试登录该页面时,我不断收到 405 错误。我已经研究了这个问题,但它似乎只在你没有使用正确的方法时才会出现,但因为它是一个登录屏幕 POST 和 GET 应该绰绰有余。
Python
from flask import Flask
from flask import Flask, flash, redirect, render_template, request, session, abort
import os
app = Flask(__name__)
@app.route('/')
def home():
if not session.get('logged_in'):
return render_template('login.html')
else:
return "Hello Boss!"
@app.route('/login', methods=['POST', 'GET'])
def do_admin_login():
if request.form['psw'] == 'password' and request.form['id'] == 'admin':
print ("Hey ya!")
else:
print('wrong password!')
return home()
if __name__ == "__main__":
app.secret_key = os.urandom(12)
app.run(debug=True,host='0.0.0.0', port=80)
HTML
<!DOCTYPE html>
<html>
<body>
<h1>Please login</h1
<form method="POST">
<input name="id" type="text" placeholder="Enter UserID">
<br>
<input name="psw" type="password" placeholder="Enter Password">
<input type="submit">
</form>
</body>
</html>
我被重定向到另一个问题,该问题通过更改操作部分来解决,但是我没有操作,所以这应该不是同一个问题。我曾尝试向其中添加一个动作元素,但这并没有改变任何东西
问题是需要在HTML中指定action
属性:
<form method="POST" action="{{url_for('do_admin_login')}}">
<input name="id" type="text" placeholder="Enter UserID">
<br>
<input name="psw" type="password" placeholder="Enter Password">
<input type="submit">
</form>
您可能会注意到,我使用 url_for
函数通过提供的方法为给定端点生成 URL(在本例中为 do_admin_login()
)。因此值得一提的是,您需要将语句 return home()
更改为 return url_for("home")
.
我试图在 raspberry pi 上创建一个基本登录页面,但是当我尝试登录该页面时,我不断收到 405 错误。我已经研究了这个问题,但它似乎只在你没有使用正确的方法时才会出现,但因为它是一个登录屏幕 POST 和 GET 应该绰绰有余。
Python
from flask import Flask
from flask import Flask, flash, redirect, render_template, request, session, abort
import os
app = Flask(__name__)
@app.route('/')
def home():
if not session.get('logged_in'):
return render_template('login.html')
else:
return "Hello Boss!"
@app.route('/login', methods=['POST', 'GET'])
def do_admin_login():
if request.form['psw'] == 'password' and request.form['id'] == 'admin':
print ("Hey ya!")
else:
print('wrong password!')
return home()
if __name__ == "__main__":
app.secret_key = os.urandom(12)
app.run(debug=True,host='0.0.0.0', port=80)
HTML
<!DOCTYPE html>
<html>
<body>
<h1>Please login</h1
<form method="POST">
<input name="id" type="text" placeholder="Enter UserID">
<br>
<input name="psw" type="password" placeholder="Enter Password">
<input type="submit">
</form>
</body>
</html>
我被重定向到另一个问题,该问题通过更改操作部分来解决,但是我没有操作,所以这应该不是同一个问题。我曾尝试向其中添加一个动作元素,但这并没有改变任何东西
问题是需要在HTML中指定action
属性:
<form method="POST" action="{{url_for('do_admin_login')}}">
<input name="id" type="text" placeholder="Enter UserID">
<br>
<input name="psw" type="password" placeholder="Enter Password">
<input type="submit">
</form>
您可能会注意到,我使用 url_for
函数通过提供的方法为给定端点生成 URL(在本例中为 do_admin_login()
)。因此值得一提的是,您需要将语句 return home()
更改为 return url_for("home")
.