Разделить приложение 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"


Я знаю, что с этим примером это, очевидно, не будет работать, но можно ли сделать что-то подобное?



спасибо

856   4  

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

    Ничего не найдено.