python - NameError:名称'app'未在Flask中定义
问题描述
FlaskWebDir
helloapp
__init__.py
templates
hello.py
main.py
__ init __.py
:
from flask import Flask
from helloapp import routes
app = Flask(__name__)
if __name__=='__main__':
app.run()
routes.py
:
from flask import render_template
@app.route("/")
def hello():
### code
@app.route("/user/<username>/")
def hello_user(username):
### code
@app.route("/users/")
def display_users():
###code
main.py
:
from helloapp import app
$ flask run
* Serving Flask app "main.py"
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
Traceback (most recent call last):
File "/home/as/FlaskWebDir/projenv/bin/flask", line 8, in <module>
sys.exit(main())
File "/home/as/FlaskWebDir/projenv/lib/python3.8/site-packages/flask/cli.py", line 967, in main
cli.main(args=sys.argv[1:], prog_name="python -m flask" if as_module else None)
File "/home/as/FlaskWebDir/projenv/lib/python3.8/site-packages/flask/cli.py", line 586, in main
return super(FlaskGroup, self).main(*args, **kwargs)
File "/home/as/FlaskWebDir/projenv/lib/python3.8/site-packages/click/core.py", line 782, in main
rv = self.invoke(ctx)
File "/home/as/FlaskWebDir/projenv/lib/python3.8/site-packages/click/core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/home/as/FlaskWebDir/projenv/lib/python3.8/site-packages/click/core.py", line 1066, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/home/as/FlaskWebDir/projenv/lib/python3.8/site-packages/click/core.py", line 610, in invoke
return callback(*args, **kwargs)
File "/home/as/FlaskWebDir/projenv/lib/python3.8/site-packages/click/decorators.py", line 73, in new_func
return ctx.invoke(f, obj, *args, **kwargs)
File "/home/as/FlaskWebDir/projenv/lib/python3.8/site-packages/click/core.py", line 610, in invoke
return callback(*args, **kwargs)
File "/home/as/FlaskWebDir/projenv/lib/python3.8/site-packages/flask/cli.py", line 848, in run_command
app = DispatchingApp(info.load_app, use_eager_loading=eager_loading)
File "/home/as/FlaskWebDir/projenv/lib/python3.8/site-packages/flask/cli.py", line 305, in __init__
self._load_unlocked()
File "/home/as/FlaskWebDir/projenv/lib/python3.8/site-packages/flask/cli.py", line 330, in _load_unlocked
self._app = rv = self.loader()
File "/home/as/FlaskWebDir/projenv/lib/python3.8/site-packages/flask/cli.py", line 388, in load_app
app = locate_app(self, import_name, name)
File "/home/as/FlaskWebDir/projenv/lib/python3.8/site-packages/flask/cli.py", line 240, in locate_app
__import__(module_name)
File "/home/as/FlaskWebDir/main.py", line 1, in <module>
from helloapp import app
File "/home/as/FlaskWebDir/helloapp/__init__.py", line 2, in <module>
from helloapp import routes
File "/home/as/FlaskWebDir/helloapp/routes.py", line 5, in <module>
@app.route("/")
NameError: name 'app' is not defined
解决方案
在您的路线中,添加:
# Previous import
from helloapp import app
@app.route('/')
def hello():
# ...
# ...
您在此处导入的app
内容用于您的装饰器。
推荐阅读
- html - 单击 div 时,Bootstrap 弹出框一直保持不变
- python - 如何从帕累托前沿获得膝点解决方案
- angular - 如何在Angular中检查网页上特定组件的输出
- powerbi - 填充表格行的 Power BI 度量
- discord - TypeError:channel.send 不是函数(已弃用?)
- powerbi - 如何在 Power BI 中复制没有触摸板的触摸板缩放?
- mysql - 根据最后三个订单计算每位客户的退货率
- android - Android使用recyclerview在卡片内分组相同的视图类型
- ios - 使 iOS SwiftUI TextField 拒绝错误的数字输入
- mongodb - MongoDb 使用多个嵌套数组对文档进行排序