我正在研究烧瓶应用程序,我有以下目录结构:
flask_app/
|
|-- __init__.py
|-- app.py
|-- views.py
|-- static/
|-- templates/
文件的示例内容为:
app.py:
from flask import Flask
import views
app = Flask(__name__)
if __name__ == '__main__':
app.run()
views.py:
from app import app
@app.route('/')
def index():
return "Hello, world!"a
__init__.py
文件为空。
当我运行应用程序时,服务器启动,但索引页面404。我知道我需要一个__init__.py
文件才能导入导入,所以views.py文件没有被导入吗?
答案 0 :(得分:2)
您正在进行循环导入。当app.py
导入views
时,app.py
处理暂停views.py
进程。 views.py
执行的第一件事是从app
导入app.py
,但尚未定义app
,因此会导入app.py
。这会暂停views.py
的处理并开始处理app.py
。等等。
Flask documentation为此提供了解决方案。
app.py
from flask import Flask
flask = Flask(__name__)
import views
if __name__ == '__main__':
app.run()
views.py
from app import app
@app.route('/')
def index():
return "Hello, world!"
编辑:查看烧瓶文档,在run.py
上方的目录中添加flask_app
并将app.py重命名为__init__.py
会导致问题得到解决。
run.py
from yourapplication import app
app.run(debug=True)
目录结构现在如下:
|run.py
|flask_app/
|
|-- __init__.py
|-- app.py
|-- views.py
|-- static/
|-- templates/
答案 1 :(得分:0)
if_name == main中的代码将被执行,以防该文件作为脚本运行,而不是导入。
以下是它对我有用的方法:
结构:
- >计算器(项目文件夹)
---->计算器(包文件夹)
--------> _ _init ___。py
--------> views.py
--------> createdb.py
----> runserver.py
init .py脚本
from flask import Flask
app = Flask(__name__)
app.config.update(DEBUG=True)
import createdb
import views
runserver.py脚本
#!/usr/bin/python
from calculator import app
app.run()
通过调用 runserver.py
,通过命令行运行应用程序