【发布时间】:2019-02-12 12:20:28
【问题描述】:
我有一个 HTML 格式的文件上传表单,应该用于上传并保存到静态文件夹。问题是它在一个简单的 Flask 应用程序中运行良好,但它只是无法使用蓝图模板。
我尝试了几种不同的方法来完成这项工作。当我使用“url_for”时,页面甚至无法加载(werkzeug.routing.BuildError: Could not build url for endpoint 'upload'。你的意思是 'forms_blueprint.upload' ?)。
但是当我将“url_for”改为“form_upload.html”时,结果始终是方法不允许。
感谢所有想法。
routes.py:
UPLOAD_FOLDER = '/home/juliosouto/flask-gentelella/app/uploaded_files/'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
@blueprint.route('/<template>', methods = ['GET', 'POST'])
@login_required
def route_template(template):
return render_template('form_upload' + '.html')
@blueprint.route('/upload', methods=['POST','GET'])
def upload():
file = request.files['file']
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
form_upload.html:
<form action ="{{ url_for('upload') }}" class= "dropzone" name="file" method = "POST" enctype = "multipart/form-data"></form>
我需要将文件保存到静态文件夹。
【问题讨论】:
-
您的上传路由默认为 GET 请求,但似乎没有提供 render_template 或返回。此外,您可能希望在处理文件上传之前执行 if request.method == Post 之类的操作,然后返回 Get 方法或任何其他路由。
-
@gittert,我也试过了。没有工作。
标签: python html forms flask blueprint