问题描述
我正在尝试发送图片网址
var photoData = $("#photo").attr("src");
// console.log(photoURL);
console.log(photoData);
var data = photoData;
$.post("/analyze",data)
.done((prediction) => {
console.log('success')
})
使用Flask Python转到此路线
@app.route('/analyze',methods=['POST'])
async def analyze(request):
predictionRaw = learn.predict(open_image(get_image_files(request)[0]))
prediction = str(predictionRaw)
return prediction
learn.predict()
使用Fast Ai库。对于Python代码,我实际上遵循this code。
但是由于某种原因,它总是给我这个错误analyze() missing 1 required positional argument: 'request'
。
为什么会发生这种情况,我做错了什么?我很确定我已经正确使用JS Ajax发送了请求参数。
Traceback (most recent call last):
File "C:\Users\apanj\Anaconda3\lib\site-packages\flask\app.py",line 2464,in __call__
return self.wsgi_app(environ,start_response)
File "C:\Users\apanj\Anaconda3\lib\site-packages\flask_socketio\__init__.py",line 46,in __call__
start_response)
File "C:\Users\apanj\Anaconda3\lib\site-packages\engineio\middleware.py",line 74,start_response)
File "C:\Users\apanj\Anaconda3\lib\site-packages\flask\app.py",line 2450,in wsgi_app
response = self.handle_exception(e)
File "C:\Users\apanj\Anaconda3\lib\site-packages\flask\app.py",line 1867,in handle_exception
reraise(exc_type,exc_value,tb)
File "C:\Users\apanj\Anaconda3\lib\site-packages\flask\_compat.py",line 39,in reraise
raise value
File "C:\Users\apanj\Anaconda3\lib\site-packages\flask\app.py",line 2447,in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\apanj\Anaconda3\lib\site-packages\flask\app.py",line 1952,in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Users\apanj\Anaconda3\lib\site-packages\flask\app.py",line 1821,in handle_user_exception
reraise(exc_type,line 1950,in full_dispatch_request
rv = self.dispatch_request()
File "C:\Users\apanj\Anaconda3\lib\site-packages\flask\app.py",line 1936,in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
TypeError: analyze() missing 1 required positional argument: 'request'
解决方法
您没有在URL中传递request
。它自动包含在请求中。试试:
from flask import request
@app.route('/analyze',methods=['POST'])
def analyze():
print(request.get_data()) # to see what you're sending
predictionRaw = learn.predict(open_image(get_image_files(request.data)))
prediction = str(predictionRaw)
return prediction