如何使用 Flask 中的蓝图修复表单中不允许的 405 方法
How to fix 405 Method Not Allowed in forms, using Blueprint in Flask
我在HTML中有一个文件上传表单,应该用来上传并保存到静态文件夹。问题是它在一个简单的 Flask 应用程序中工作正常,但它 不能使用蓝图模板。
我尝试了几种不同的方法来完成这项工作。当我使用“url_for”时,页面甚至没有加载(werkzeug.routing.BuildError:无法为端点构建 url '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>
我需要将文件保存到静态文件夹。
When I use "url_for", the page doesn't even load (werkzeug.routing.BuildError: Could not build url for endpoint 'upload'. Did you mean 'forms_blueprint.upload' instead?).
这正是它所说的意思。当你构建 URL 时,你需要按如下方式进行:
{{ url_for('forms_blueprint.upload') }}
此外,正如@gittert 正确指出的那样,您的上传路径return什么都没有。
这应该呈现一个模板,或者 return 重定向到其他地方。
我在HTML中有一个文件上传表单,应该用来上传并保存到静态文件夹。问题是它在一个简单的 Flask 应用程序中工作正常,但它 不能使用蓝图模板。
我尝试了几种不同的方法来完成这项工作。当我使用“url_for”时,页面甚至没有加载(werkzeug.routing.BuildError:无法为端点构建 url '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>
我需要将文件保存到静态文件夹。
When I use "url_for", the page doesn't even load (werkzeug.routing.BuildError: Could not build url for endpoint 'upload'. Did you mean 'forms_blueprint.upload' instead?).
这正是它所说的意思。当你构建 URL 时,你需要按如下方式进行:
{{ url_for('forms_blueprint.upload') }}
此外,正如@gittert 正确指出的那样,您的上传路径return什么都没有。
这应该呈现一个模板,或者 return 重定向到其他地方。