Разделить приложение Python Flask на несколько файлов
у меня возникли проблемы с пониманием того, как разделить приложение колбы на несколько файлов.
Я создаю веб-сервис, и я хочу разделить api на разные файлы (AccountAPI.py, UploadAPI.py ...), просто чтобы у меня не было одного огромного файла python.
Я читал, что вы можете сделать это с помощью чертежей, но я не совсем уверен, что маршрут является правильным для меня.
в конечном счете я хочу запустить один основной файл python и включить другие файлы, чтобы когда он работает, они считаются одним большим файлом.
например, если у меня есть Main.py и AccountAPI.py я хочу быть в состоянии сделать это:
Main.py:
from flask import Flask
import AccountAPI
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
AccountAPI.py:
@app.route("/account")
def accountList():
return "list of accounts"
Я знаю, что с этим примером это, очевидно, не будет работать, но можно ли сделать что-то подобное?
спасибо
4 ответов:
да, чертежи-это правильный способ сделать это. То, что вы пытаетесь сделать, может быть достигнуто следующим образом:
Main.py
from flask import Flask from AccountAPI import account_api app = Flask(__name__) app.register_blueprint(account_api) @app.route("/") def hello(): return "Hello World!" if __name__ == "__main__": app.run()AccountAPI.py
from flask import Blueprint account_api = Blueprint('account_api', __name__) @account_api.route("/account") def accountList(): return "list of accounts"если это опция, вы можете использовать разные префиксы URL для разных API/схем элементов, чтобы четко разделить их. Это можно сделать с небольшой модификацией выше
register_blueprintзвоните:app.register_blueprint(account_api, url_prefix='/accounts')дополнительные документы, вы также можете взглянуть на официальные документы.
используя
Blueprintвы можете добавить свои маршруты в .структура
app.py routes __init__.py index.py users.py__init__.py
from flask import Blueprint routes = Blueprint('routes', __name__) from .index import * from .users import *index.py
from flask import render_template from . import routes @routes.route('/') def index(): return render_template('index.html')users.py
from flask import render_template from . import routes @routes.route('/users') def users(): return render_template('users.html')app.py
from routes import * app.register_blueprint(routes)
если вы хотите добавить новый файл маршрута, скажем
accounts.py, вам просто нужно создать файлaccounts.pyна , какindex.pyиusers.py, затем импортируйте его вroutes.__init__.pyфайлfrom .accounts import *
Если вы используете схемы элементов и хотите перенаправить / перенаправить на url-адрес вашей схемы элементов внутри шаблона, который вы используете, вам нужно использовать правильный оператор url_for.
в вашем случае, если вы хотите открыть учетную запись url вашего проекта, вы должны указать ее так в своем шаблон:
href="{{ url_for('account_api.account') }}"и главное app это будет выглядеть так:
redirect(url_for('account_api.account'))в противном случае библиотека werkzeug бросит ошибка.
еще один способ сделать это может быть с загрузка, где вы бы явно прикрепить функции представления на основе необходимости.
Comments