我正在努力让Flask应用程序从文本框中读取文本或在表单中设置文件上传功能。
底层代码可以独立地使用任一选项,但我无法在"之间切换。洁具。
如何合并案例'选项。那是: 1.如果选择了文件上载选项,则应用程序将上载和读取/处理文件中的文本 2.否则应用程序会从文本框中上传文本; 3.如果两个文件都没有上传,也没有弹出文本框,则该应用程序存在,并显示错误消息。
从文本框输入
app = Flask(__name__)
app.config['MAX_CONTENT_LENGTH'] = 2 * 1024 * 1024
@app.route('/')
def myform():
return render_template("get_input.html")
@app.route('/', methods=['POST'])
def my_form_post():
text = request.form['text']
....
上传文件中的文字
file = request.files['file']
f = secure_filename(file.filename)
text=f.read()
....continue with processing
欢迎任何帮助。
答案 0 :(得分:1)
假设您的网页上有 2个不同的表单,一个简单的选项是为每个表单添加隐藏值:
<! -- first form -->
<input type="hidden" name="form_name" value="text_entry_form">
...
<! -- second form -->
<input type="hidden" name="form_name" value="file_upload_form">
然后,在您的烧瓶功能中,您可以使用 form_name 值来区分提交的表单:
@app.route('/', methods=['POST'])
def my_form_post():
if request.form['form_name'] === 'text_entry_form':
# code to process textarea data
else:
# code to process file upload data
或者,您可以将表单发布到不同的Flask端点,或者您可以将它们全部打包到一个端点&amp;使用P/R/G Pattern查看功能。
不应直接使用request.form,而应使用MultiDict get()方法,如下所示:
text = request.form.get('text') # returns None if not in the request
if text:
# process text