Приложение Split Python Flask в несколько файлов

У меня возникли проблемы с пониманием того, как разбить флеш-приложение на несколько файлов.

Я создаю веб-сервис, и я хочу разбить api на разные файлы (AccountAPI.py, UploadAPI.py, …), так что у меня нет одного огромного файла python.

Я читал, что вы можете сделать это с помощью Blueprints, но я не совсем уверен, что маршрут для меня правильный.

В конечном итоге я хочу запустить один основной файл 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 Solutions collect form web for “Приложение Split Python Flask в несколько файлов”

Да, чертежи – правильный способ сделать это. То, что вы пытаетесь сделать, может быть достигнуто следующим образом:

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 вы можете добавить свои маршруты в каталог routes .

Состав

 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 в каталоге routes , как index.py и users.py , а затем импортировать его в routes.__init__.py файл

 from .accounts import * 

Если вы используете чертежи и хотите перенаправлять / перенаправлять URL-адрес вашего чертежа внутри шаблона, который вы используете, вам нужно использовать правильный оператор url_for.

В вашем случае, если вы хотите открыть учетную запись url вашего проекта, вам необходимо указать его в шаблоне :

 href="{{ url_for('account_api.account') }}" 

и для основного приложения это будет выглядеть так:

 redirect(url_for('account_api.account')) 

В противном случае библиотека werkzeug выдает ошибку.

Другой способ сделать это может быть с ленивой загрузкой , где вы бы явно привязывали функции просмотра по необходимости.

 
Interesting Posts for Van-Lav
Python - лучший язык программирования в мире.