Вы объявили два экземпляра Flask
, один в __init__.py
и другой в run.py
.
В официальной документации Flask есть руководство по как разбить большее приложение на несколько модулей .
Я обновил ваш код, имена файлов и структуру папок.
Структура папки:
├── application
│ ├── __init__.py
│ └── views.py
├── requirements.txt
└── run_application.py
run_application.py
:
from flask import Flask
from gevent.pywsgi import WSGIServer
from application import app
http_server = WSGIServer(('', 5000), app)
http_server.serve_forever()
application/__init__.py
:
from flask import Flask
app = Flask(__name__)
import application.views
application/views.py
:
from application import app
@app.route('/')
def index():
return 'Home route.'
@app.route('/hello')
def hello():
return 'Hello World!'
requirements.txt
:
Click==7.0
Flask==1.0.2
gevent==1.4.0
greenlet==0.4.15
itsdangerous==1.1.0
Jinja2==2.10.1
MarkupSafe==1.1.1
Werkzeug==0.15.2
Команда запуска:
python run_application.py
Выход :
- Домашний маршрут
http://localhost:5000/
![Home route](https://i.stack.imgur.com/FQd56.png)
Привет маршрут
http://localhost:5000/hello
![hello route](https://i.stack.imgur.com/ljoWY.png)
Обновление
Согласно Документация Flask на чертежи ,
Flask использует концепцию чертежей для создания компонентов приложения и поддержки общих шаблонов в приложении или между приложениями.
Обновлен код для упрощения blueprints
.
Обновленная структура каталогов:
├── application1
│ ├── __init__.py
│ └── routes.py
├── application2
│ ├── __init__.py
│ └── routes.py
├── apps.py
└── requirements.txt
apps.py
:
from flask import Flask
from gevent.pywsgi import WSGIServer
from application1.routes import application1_blueprint
from application2.routes import application2_blueprint
app = Flask(__name__)
app.register_blueprint(application1_blueprint)
app.register_blueprint(application2_blueprint)
http_server = WSGIServer(('', 5000), app)
http_server.serve_forever()
application1/__init__.py
: пустой файл
application1/routes.py
:
from flask import Blueprint
application1_blueprint = Blueprint('application1', __name__)
@application1_blueprint.route('/app1')
def application1_index():
return 'Home route for application1'
@application1_blueprint.route('/hello1')
def hello1():
return 'Hello World from application1!'
application2/__init__.py
: пустой файл
application2/routes.py
:
from flask import Blueprint
application2_blueprint = Blueprint('application2', __name__)
@application2_blueprint.route('/app2')
def application2_index():
return 'Home route for application2'
@application2_blueprint.route('/hello2')
def hello2():
return 'Hello World from application2!'
Вывод:
/app1
маршрутот application1
:
![application 1 view](https://i.stack.imgur.com/DvJ08.png)
/app2
маршрут от application2
:
![application 2 view](https://i.stack.imgur.com/WPGP0.png)