返回顶部
首页 > 资讯 > 后端开发 > Python >为什么NoAppException(f"Function reference must be a simple name: {app_name!r}."),怎么解决
  • 440
分享到

为什么NoAppException(f"Function reference must be a simple name: {app_name!r}."),怎么解决

python错误处理软件科技新闻flask报错flaskapp 2024-02-28 21:02:04 440人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

报错的原因这个错误消息表明你在使用 flask 时出现了一个错误,该错误是由 `NoAppException` 引发的,它表明应用程序函数引用必须是简单名称。这通常是由于在创建 Flask 应用程序实例时,将应用程序函数作为一个调用,而不是

报错的原因

这个错误消息表明你在使用 flask 时出现了一个错误,该错误是由 `NoAppException` 引发的,它表明应用程序函数引用必须是简单名称。

这通常是由于在创建 Flask 应用程序实例时,将应用程序函数作为一个调用,而不是一个简单的名称传递给了`Flask`函数,导致这个错误。 例如,如果你有这样一个应用程序函数:


def create_app():
    app = Flask(__name__)
    # ...
    return app

你需要这样做:


app = create_app()

而不是这样:


app = create_app()()

如何解决

解决这个问题的一种方法是确保传递给 `Flask` 函数的应用程序函数是一个简单的名称,而不是一个函数调用。这可以通过更改代码来实现,例如,如果你当前正在这样做:


app = Flask(__name__)()

更改为:


app = Flask(__name__)

如果你不想改变代码结构,可以使用其他方法来解决这个问题,例如通过重写你的应用程序函数来确保它返回一个 Flask 应用程序实例而不是一个调用。

例如,如果你有这样一个应用程序函数:


def create_app():
    app = Flask(__name__)
    # ...
    return app

你可以这样做:


app = create_app

或者在 create_app() 函数里面调用app,返回app,这样就可以在调用函数时直接返回app,而不用再加一层括号。

这样就可以避免"Function reference must be a simple name"的问题了。

使用例子

是的,例如在这里是一个使用单独的应用程序工厂的示例:


from flask import Flask

def create_app():
    app = Flask(__name__)
    # configure the app here
    # ...

    @app.route('/')
    def hello():
        return 'Hello, World!'
    return app

app = create_app()

if __name__ == '__main__':
    app.run()

这里, `create_app` 函数返回了一个 Flask 应用程序实例,而不是一个函数调用。然后将应用程序实例赋值给全局变量 `app`,在这种情况下,这个应用程序实例可以由你自己的代码以及 Flask 提供的脚本直接使用。

或者如果你喜欢这样写:


from flask import Flask

def create_app():
    app = Flask(__name__)
    # configure the app here
    # ...

    @app.route('/')
    def hello():
        return 'Hello, World!'
    return app()

app = create_app

if __name__ == '__main__':
    app.run()

在这种情况下,create_app()函数直接返回了app,而不是app(),在这种情况下,你的代码就不需要再调用一次函数了。

--结束END--

本文标题: 为什么NoAppException(f"Function reference must be a simple name: {app_name!r}."),怎么解决

本文链接: https://lsjlt.com/news/569627.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作