login
endpoint của tôi trông giống nhưcách truy cập dữ liệu biểu mẫu bằng bình?
@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'
Khi tôi thử nghiệm này sử dụng curl
, cuộc gọi GET
trông giống như
⮀ ~PYTHONPATH ⮀ ⭠ 43± ⮀ curl http://127.0.0.1:5000/login/
GET on login not supported
nhưng trên POST
, tôi không thể truy cập vào dữ liệu mẫu và nhận được 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>
Trên máy chủ, mặc dù thông tin gỡ lỗi in sau
ImmutableMultiDict([("{'uuid': 'admin', 'password': 'admin'}", u'')])
nơi tôi làm print request.form
. Tôi không thể hiểu được nơi tôi đang làm sai
Cảm ơn @Blender, nhưng câu hỏi là tại sao tôi không thể truy cập 'uuid' khi tôi gửi cho khách hàng dưới hình thức dữ liệu? – daydreamer
@daydreamer: Flask gửi phản hồi đó chỉ khi bạn truy cập một khóa không tồn tại trong đối tượng ['request.form'] (http://flask.pocoo.org/docs/quickstart/#the-request-object). Thử sử dụng 'request.form.get ('uuid', None)'. – Blender
Như đã đề cập trong câu hỏi của tôi, 'request.form' của tôi là' ImmutableMultiDict ([("{'uuid': 'admin', 'mật khẩu': 'admin'}", u '')]) ' – daydreamer