Найкраща структура папок для вашого Flask додатку для покращення читаємості та підтримуваності.

текст перекладу

pic

Flask — це веб-фреймворк, який дозволяє розробникам швидко і легко створювати легкі веб-додатки. Flask є мікрофреймворком, що надає розробникам гнучкість у структуризації їхніх проектів відповідно до їхніх конкретних потреб. Це легкий і гнучкий фреймворк, який дозволяє організувати ваш проект так, як вам зручно, і не нав’язує структуру папок, як це робить Django, що інколи ускладнює розуміння того, як організувати проект Flask.

У цій статті ми обговоримо найкращі практики для структурування вашого Flask проекту. Ми розглянемо, як організувати файли, як правильно називати файли та директорії, а також як структурувати ваш код. Зверніть увагу, що для різних проектів можуть бути потрібні різні структури папок. Однак ця структура папок є корисною в загальних випадках.

Коренева директорія проекту

Це коренева директорія вашого проекту, яка містить усі основні папки та файли для вашого додатку.

Папка app/ містить файли та папки для ініціалізації Flask додатку.

Папка tests/ містить файли тестів для вашого додатку.

Файл wsgi.py є точкою входу для вашого Flask додатку. Він визначає, як веб-сервер взаємодіє з вашим Flask додатком.

Файл requirements.txt містить деталі всіх пакетів — разом з їх відповідними версіями — які використовуються для створення проекту.

Директорія додатку

pic

Файл __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.

Leave a Reply

Your email address will not be published. Required fields are marked *