текст перекладу
Flask — це веб-фреймворк, який дозволяє розробникам швидко і легко створювати легкі веб-додатки. Flask є мікрофреймворком, що надає розробникам гнучкість у структуризації їхніх проектів відповідно до їхніх конкретних потреб. Це легкий і гнучкий фреймворк, який дозволяє організувати ваш проект так, як вам зручно, і не нав’язує структуру папок, як це робить Django, що інколи ускладнює розуміння того, як організувати проект Flask.
У цій статті ми обговоримо найкращі практики для структурування вашого Flask проекту. Ми розглянемо, як організувати файли, як правильно називати файли та директорії, а також як структурувати ваш код. Зверніть увагу, що для різних проектів можуть бути потрібні різні структури папок. Однак ця структура папок є корисною в загальних випадках.
Коренева директорія проекту
Це коренева директорія вашого проекту, яка містить усі основні папки та файли для вашого додатку.
Папка app/
містить файли та папки для ініціалізації Flask додатку.
Папка tests/
містить файли тестів для вашого додатку.
Файл wsgi.py
є точкою входу для вашого Flask додатку. Він визначає, як веб-сервер взаємодіє з вашим Flask додатком.
Файл requirements.txt
містить деталі всіх пакетів — разом з їх відповідними версіями — які використовуються для створення проекту.
Директорія додатку
Файл __init__.py
ініціалізує Flask додаток та налаштовує конфігурації. Також ідеально використовувати функцію фабрики додатку у великомасштабних Flask додатках.
def create_app(config_object):
"""Створення фабрики додатку
:param config_object: Конфігураційний об'єкт для використання
"""
app = Flask(__name__)
app.config.from_object(config_object)
register_extension(app)
register_context_processors(app)
register_blueprints(app)
return app
Файл extensions.py
містить додаткові пакети, які додають функціональність до Flask додатку.
Файл settings.py
зазвичай використовується для зберігання конфігураційної інформації у Flask.
class Config(object):
"""Базова конфігурація."""
SECRET_KEY = os.environ.get('CONDUIT_SECRET', 'secret-key') # TODO: Change me
APP_DIR = os.path.abspath(os.path.dirname(__file__)) # Ця директорія
PROJECT_ROOT = os.path.abspath(os.path.join(APP_DIR, os.pardir))
BCRYPT_LOG_ROUNDS = 13
DEBUG_TB_INTERCEPT_REDIRECTS = False
CACHE_TYPE = 'simple' # Може бути "memcached", "redis" тощо
SQLALCHEMY_TRACK_MODIFICATIONS = False
JWT_AUTH_USERNAME_KEY = 'email'
JWT_AUTH_HEADER_PREFIX = 'Token'
CORS_ORIGIN_WHITELIST = []
JWT_HEADER_TYPE = 'Token'
class ProdConfig(Config):
"""Конфігурація для продакшн середовища."""
ENV = 'prod'
DEBUG = False
SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL', 'postgresql://localhost/example')
class DevConfig(Config):
"""Конфігурація для середовища розробки."""
ENV = 'dev'
DEBUG = True
DB_NAME = 'dev.db'
# Помістіть файл бази даних у корінь проекту
DB_PATH = os.path.join(Config.PROJECT_ROOT, DB_NAME)
SQLALCHEMY_DATABASE_URI = 'sqlite:///{0}'.format(DB_PATH)
CACHE_TYPE = 'simple' # Може бути "memcached", "redis" тощо
текст перекладу
JWT_ACCESS_TOKEN_EXPIRES = timedelta(10 ** 6)
class TestConfig(Config):
"""Конфігурація для тестування."""
TESTING = True
DEBUG = True
SQLALCHEMY_DATABASE_URI = 'sqlite://'
# Для швидших тестів; потрібно хоча б 4, щоб уникнути "ValueError: Invalid rounds"
BCRYPT_LOG_ROUNDS = 4
Файл utils.py
містить набір невеликих функцій і класів Python, які спрощують і скорочують загальні шаблони.
Директорія статичних файлів
Папка static містить ресурси, які використовуються шаблонами, зокрема CSS файли, JavaScript файли та зображення.
Директорія шаблонів
Директорія templates
у Flask використовується для зберігання HTML файлів, які ваш додаток відображає як частину інтерфейсу користувача. Вона відіграє важливу роль у системі шаблонів Flask, яка використовує Jinja2 для динамічного відображення контенту.
Перекладено з: Best folder structure for your Flask application to improve readability and maintainability.