Python Flask如何在文本框和上传文件功能之间设置选项?

时间:2017-03-19 13:54:15

标签: python-2.7 flask

我正在努力让Flask应用程序从文本框中读取文本或在表单中设置文件上传功能。

My rendered entry form 底层代码可以独立地使用任一选项,但我无法在"之间切换。洁具。

如何合并案例'选项。那是: 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

欢迎任何帮助。

1 个答案:

答案 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