flask - 当我尝试在烧瓶中使用 Jinja 模板和 request.url 返回数据时,为什么会出现错误?
问题描述
尝试上述操作时出现以下错误:
错误:/cv/action_prediction/TSN_PIC [POST] Traceback 上的异常(最近一次调用最后一次):文件“D:\Anaconda\envs\DEMO\lib\site-packages\flask\app.py”,第 2070 行,在 wsgi_app response = self.full_dispatch_request() 文件“D:\Anaconda\envs\DEMO\lib\site-packages\flask\app.py”,第 1515 行,full_dispatch_request rv = self.handle_user_exception(e) 文件“D:\Anaconda \envs\DEMO\lib\site-packages\flask\app.py”,第 1513 行,在 full_dispatch_request rv = self.dispatch_request() 文件“D:\Anaconda\envs\DEMO\lib\site-packages\flask\app .py”,第 1499 行,在 dispatch_request 中返回 self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args) 文件“D:/Anaconda/envs/DEMO/Visionet_ML_Project/main.py”,第 267 行,在 cv_acp_TSN_PIC_upload_image 返回重定向(request.url,结果)文件“D:\Anaconda\envs\DEMO\lib\site-packages\werkzeug\utils.py",第 569 行,重定向 mimetype="text/html",文件 "D:\Anaconda\envs\DEMO\lib\site-packages\ werkzeug\wrappers\response.py",第 185 行,在init content_type=content_type,文件“D:\Anaconda\envs\DEMO\lib\site-packages\werkzeug\sansio\response.py”,第 140 行,在init self.status = status # 类型:忽略文件“D:\ Anaconda\envs\DEMO\lib\site-packages\werkzeug\sansio\response.py",第 162 行,在状态中引发 TypeError("Invalid status argument") TypeError: Invalid status argument 127.0.0.1 - - [07/Sep/ 2021 10:53:01]“POST /cv/action_prediction/TSN_PIC HTTP/1.1”500 -
我的代码如下:upload.html
<!-- Page Content -->
<div id="content" class="p-4 p-md-5 pt-5">
<h2 class="mb-4">TSN PIC</h2>
<!Doctype html>
<title>Python Flask File Upload Example</title>
<h2>Select a file to upload</h2>
<p>
{% with messages = get_flashed_messages() %}
{% if messages %}
<ul>
{% for message in messages %}
<li>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}
</p>
{% if filename %}
<div>
<table border=1>
{% for result in results%}
<tr>
<td>
{{result.data}}
</td>
</tr>
{% endfor %}
</table>
<img src="{{ url_for('cv_acp_TSN_PIC_display_image', filename=filename) }}">
</div>
{% endif %}
<form method="post" action="/cv/action_prediction/TSN_PIC" enctype="multipart/form-data">
<dl>
<p>
<input type="file" name="file" autocomplete="off" required>
</p>
</dl>
<p>
<input type="submit" value="Submit">
</p>
</form>
</div>
</div>
cv_acp.py
def TSN_PIC(img):
img = image.imread(img)
fig, ax = plt.subplots(figsize=(18, 18))
ax.imshow(img.asnumpy())
transform_fn = transforms.Compose([
video.VideoCenterCrop(size=224),
video.VideoToTensor(),
video.VideoNormalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])])
img_list = transform_fn([img.asnumpy()])
net = get_model('vgg16_ucf101', nclass=101, pretrained=True)
pred = net(nd.array(img_list[0]).expand_dims(axis=0))
classes = net.classes
topK = 5
ind = nd.topk(pred, k=topK)[0].astype('int')
# print('The input video frame is classified to be')
results = []
for i in range(topK):
result = ('\t%s - %.2f'%(classes[ind[i].asscalar()], nd.softmax(pred)[0][ind[i]].asscalar()*100))
# print((result))
datadict = {
# 'header':
'data': result
}
results.append(datadict)
#print (results)
return results
# return plt.show()
上传.py
@app.route("/cv/action_prediction/TSN_PIC")
def cv_action_prediction_TSN_PIC():
return render_template("cv_acp_TSN_PIC.html")
@app.route("/cv/action_prediction/TSN_PIC", methods=['POST'])
def cv_acp_TSN_PIC_upload_image():
if 'file' not in request.files:
flash('No file part')
return redirect(request.url)
file = request.files['file']
if file.filename == '':
flash('No image selected for uploading')
return redirect(request.url)
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
print(app.config)
path = os.path.join(app.config['UPLOAD_FOLDER'], filename)
print(path)
file.save(path)
#print(file.config)
result = cv_acp.TSN_PIC(path)
#print (result.data)
#print('upload_image filename: ' + filename)
flash('Image successfully uploaded and displayed below')
return redirect(request.url, result)
else:
flash('Allowed image types are -> png, jpg, jpeg, gif')
return redirect(request.url)
@app.route('/cv/action_prediction/TSN_PIC/result/<filename>')
def cv_acp_TSN_PIC_result(filename):
#print('display_image filename: ' + filename)
#return MASK_RCNN('static', filename='uploads/' + filename)
return redirect(url_for('static', filename='uploads/' + filename), code=301)
解决方案
推荐阅读
- linkedin - PARAMETER 中的字段值验证失败:在 linkedIn API V2 中处理字段 [/authors] 时出现数据处理异常
- magento - Magento 2:在页面加载时打开产品标签?
- mysql - MySQL获取计算列和所有列(*)
- sql - 按未确定的值选择计数
- javascript - 怎么做:在这种情况下,所有内容都放在一个对象中
- facebook-graph-api - 如何在我的 webhook 中获取实时 facebook 页面提要?
- java - 如何在流中为我的自定义对象使用 foreach?
- android - 片段标签中未解决的类“HeadlineFragment”
- ckeditor - 元素不支持指定的元素模式:“ul”
- selenium - Cucumber 不满足的依赖异常