【问题标题】:flask invoke a function and return the outputflask 调用一个函数并返回输出
【发布时间】:2020-09-10 00:48:48
【问题描述】:

目的是在UI中选择一个脚本并上传一个文件,然后返回输出,现在我使用一个虚拟脚本来连接前端和后端。

我的文件夹结构

|-app
   |-main
      |- ...
      |-views.py  <---- this!
   |-script_mgmt
      |-__init__.py
      |-manager.py  <---- this!
      |-scripts
         |-__init__.py
         |-sample.py  <---- and this!
|-...
|-run.py

这是 view.py 中的 sn-p

...
@main.route('/', methods = ['GET', 'POST'])
def index():
    form = UploadForm()
    task = None
    file = None
    if form.validate_on_submit():
        # task = form.task.data
        file = form.file.data
        mger = Manager()
        task = 'sample'
        output = mger.invoke(task, file)
        return output
    return render_template('index.html', form = form)

还有manager.py

class Manager():

    @staticmethod
    def invoke(script, file):
        from importlib import import_module
        module = import_module(f'app.script_mgmt.scripts.{script}')
        return module.main(file)

还有sample.py

def main(file):
    sample(file)

def sample(file):
    return 'Sample script triggered'

我希望输出是“触发示例脚本”,它会在我的浏览器中呈现为纯文本,但不知何故我得到了这个错误,说它返回 None。

TypeError: The view function did not return a valid response. The function either returned None or ended without a return statement.

完整的错误信息见下文。

Traceback (most recent call last)
File "C:\Users\sliu\Documents\GitHub\script-bank\venv\lib\site-packages\flask\app.py", line 2464, in __call__
return self.wsgi_app(environ, start_response)
File "C:\Users\sliu\Documents\GitHub\script-bank\venv\lib\site-packages\flask\app.py", line 2450, in wsgi_app
response = self.handle_exception(e)
File "C:\Users\sliu\Documents\GitHub\script-bank\venv\lib\site-packages\flask\app.py", line 1867, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\sliu\Documents\GitHub\script-bank\venv\lib\site-packages\flask\_compat.py", line 39, in reraise
raise value
File "C:\Users\sliu\Documents\GitHub\script-bank\venv\lib\site-packages\flask\app.py", line 2447, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\sliu\Documents\GitHub\script-bank\venv\lib\site-packages\flask\app.py", line 1953, in full_dispatch_request
return self.finalize_request(rv)
File "C:\Users\sliu\Documents\GitHub\script-bank\venv\lib\site-packages\flask\app.py", line 1968, in finalize_request
response = self.make_response(rv)
File "C:\Users\sliu\Documents\GitHub\script-bank\venv\lib\site-packages\flask\app.py", line 2098, in make_response
"The view function did not return a valid response. The"
TypeError: The view function did not return a valid response. The function either returned None or ended without a return statement.

【问题讨论】:

    标签: python web flask web-applications flask-wtforms


    【解决方案1】:

    想通了。

    忘记在 sample.py main() 函数中返回值

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-18
      • 1970-01-01
      • 2019-05-15
      • 2022-07-04
      • 2023-01-17
      • 1970-01-01
      • 2021-12-13
      相关资源
      最近更新 更多