我的login
终结点看起来像
@app.route('/login/', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
print request.form # debug line, see data printed below
user = User.get(request.form['uuid'])
if user and hash_password(request.form['password']) == user._password:
login_user(user, remember=True) # change remember as preference
return redirect('/home/')
else:
return 'GET on login not supported'
当我使用curl
进行测试时,GET
调用看起来像
⮀ ~PYTHONPATH ⮀ ⭠ 43± ⮀ curl http://127.0.0.1:5000/login/
GET on login not supported
但是在POST
上,我无法访问表单数据并获取HTTP 400
⮀ ~PYTHONPATH ⮀ ⭠ 43± ⮀ curl -d "{'uuid': 'admin', 'password': 'admin'}" http://127.0.0.1:5000/login/
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>400 Bad Request</title>
<h1>Bad Request</h1>
<p>The browser (or proxy) sent a request that this server could not understand.</p>
但在服务器上,我的调试信息会打印以下内容
ImmutableMultiDict([("{'uuid': 'admin', 'password': 'admin'}", u'')])
我在哪里做print request.form
。我不明白我做错了什么
您仍然需要返回一个响应:
这是custom Flask error pages的文档。
另外,请查看Flask-Bcrypt中的密码散列。
CURL命令行无效。JSON对象的键和值周围需要有双引号:
现在,您可以使用
request.json
访问密钥。您没有正确使用
curl
。这样试试:当试图从
request.form
获取不存在的键时,400 Bad Request
错误是常见的行为。或者,使用
request.json
而不是request.form
,然后像这样调用curl
:相关问题 更多 >
编程相关推荐