Створіть свій простий медіа сервер файлів за допомогою Flask

Створення простого медіа-сервера за допомогою Flask дозволяє ефективно організувати доступ до мультимедійних файлів на вашому сервері. У цьому додатку ми встановлюємо папку за замовчуванням для медіафайлів, яку можна змінити на іншу, і розміщуємо в ній мультимедійні файли, такі як mp3, відео, документи тощо.

Додаток перевіряє папку медіафайлів, визначає тип файлу та надає його користувачу. Код програми організовано так, щоб спершу перевірити доступність запитуваної папки, створити її, якщо вона відсутня, та потім зібрати список файлів і каталогів. Це дозволяє безпечно обробляти дані та організовувати їх для подальшого відображення.

У коді застосовується Flask, який відповідає за рендеринг HTML-шаблонів і обробку запитів. Визначається … Читати далі

Безкоштовне розгортання Flask API на Hugging Face Spaces (за допомогою Docker)

Для того щоб розгорнути простий Flask API на Hugging Face Spaces, використовуючи Docker, спершу потрібно створити Flask додаток. Для цього створіть папку flask_hello_space і в ній файл app.py. У цьому файлі визначте простий API, який відповідає рядком "Hello, World from Hugging Face Space!" на запит за допомогою Flask.

Далі створюється файл Dockerfile, в якому вказано, що для контейнера буде використовуватися базовий Python образ. У Dockerfile потрібно вказати робочу директорію, скопіювати всі файли додатку в контейнер, встановити Flask і Gunicorn, а також відкрити необхідний порт для роботи сервера.

Після цього необхідно створити конфігураційний файл README.md, який використовує Hugging … Читати далі

Обробка на стороні сервера з Datatables і Flask

Розробка веб-додатків охоплює різні завдання, від складних обчислень і моделювання даних до отримання інформації в реальному часі з різних джерел. Оброблені дані використовуються для прийняття важливих бізнес-рішень, таких як стратегічне позиціонування чи моніторинг стану взаємопов'язаних систем.

Для зручності сприйняття цієї інформації кінцевими користувачами розробляються віджети та бібліотеки, які взаємодіють з веб-браузерами і надають користувачам доступ до даних у зручній формі, наприклад, у вигляді таблиць або графіків. Одним із таких інструментів є Datatables, який дозволяє ефективно відображати великі набори даних у браузері.

Застосовуваний підхід для відображення великих наборів даних полягає в тому, щоб сервер обробляв основну частину роботи, а не передавав … Читати далі

Контрольна сума

Натхненний робочою задачею, я створив демо вебдодаток для виконання базових аналізів файлів. Хоча додаток буде відрізнятися в нашому середовищі, я застосував принципи ідентифікації збігів файлів. Для швидкого старту я обрав Flask, що дозволило мені швидко побудувати базовий додаток для відображення імен файлів.

Після цього я вирішив використати методику розробки через тести (TDD), щоб глибше ознайомитися з Pytest, хоча раніше я був більш знайомий з unittest. Спочатку я зрозумів важливість правильного визначення вимог, перш ніж писати код. Це дозволило мені підготувати відповідні тести, і я отримав цінний досвід у створенні вимог до проекту.

Після того як я написав тести, я продовжив … Читати далі

Django представлення на основі класів: 02 TemplateView

TemplateView у Django є потужним інструментом для роботи з шаблонами. Вона надає можливість використовувати шаблони для відображення даних, а також дозволяє гнучко додавати додатковий контекст для шаблонів. Основним класом для роботи з шаблонами є TemplateView, який успадковує кілька важливих класів: TemplateResponseMixin, ContextMixin та View.

Клас TemplateResponseMixin надає функціональність для рендерингу шаблонів. Його основні властивості включають:
- template_name, який визначає ім'я шаблону для рендерингу,
- template_engine, що вказує на движок шаблонів,
- response_class, який визначає клас відповіді (за замовчуванням це TemplateResponse),
- content_type, що задає тип вмісту відповіді.

Метод render_to_response(context, **response_kwargs) використовується для … Читати далі

Django: синхронні vs асинхронні представлення

У цій статті йдеться про те, як покращити продуктивність Django додатка за допомогою асинхронних представлень (views), щоб зменшити час очікування операцій введення/виведення (I/O bound operations). Ми також порівняємо синхронні та асинхронні представлення, з'ясуємо, як створити асинхронне представлення, і як правильно налаштувати Django додаток для асинхронної роботи у виробничому середовищі.

Перш за все, варто розібратися з міфом про те, що Python є "повільною" мовою для бекенд-розробки. Швидкість виконання Python справді трохи нижча порівняно з такими мовами, як Java чи C++, але реальними "вузькими місцями" для продуктивності є операції введення/виведення — зчитування з бази даних, запити по мережі та операції з дисками. … Читати далі

FastAPI — це занадто складно: Starlette і Pydantic — це все, що вам дійсно потрібно.

pic

Starlette та Pydantic є потужними інструментами для створення API на Python, що можуть дати розробникам більше гнучкості та контролю, ніж FastAPI. Хоча FastAPI здобув популярність завдяки своїм зручним можливостям і скороченому коду, фактично він є лише обгорткою для Starlette та Pydantic. Використовуючи ці бібліотеки безпосередньо, розробники можуть будувати високопродуктивні API, використовуючи лише основні компоненти.

Starlette підтримує асинхронну обробку запитів за стандартом ASGI, що дозволяє ефективно обробляти асинхронні задачі. Приклад із FastAPI показує, як це відбувається за допомогою декораторів, але в Starlette це робиться безпосередньо через маршрут на екземплярі додатка. Обидва варіанти дозволяють виконувати асинхронні операції, однак Starlette пропонує більшу гнучкість, … Читати далі

Оволодіння серіалізаторами Django REST Framework: від основ до найкращих практик

pic

Серіалізатори (serializers) у Django REST Framework (DRF) є основним інструментом для перетворення складних типів даних, таких як екземпляри моделей або Querysets, у зручні для роботи типи даних Python, а потім у формати, зручні для відправки через API, такі як JSON. Вони також допомагають виконувати зворотне перетворення: приймати дані у форматі JSON, перевіряти їх на коректність і перетворювати на Python об'єкти або екземпляри моделей, які можна зберігати в базі даних.

Серіалізатор можна порівняти з формами Django: форми перетворюють введення користувача з HTML форм на Python об'єкти, а серіалізатори — з JSON в Python об'єкти і навпаки.

Іноді ви не працюєте з … Читати далі

Чому початківцям варто двічі подумати перед тим, як вибирати Django (страшна історія для новачків)

Якщо ви вже працювали з Django, то, мабуть, знаєте, наскільки він зручний і потужний. Я використовую його вже кілька років і отримую величезне задоволення від роботи з ним — це справжній фреймворк для реальних проєктів, який має все, що потрібно. Однак, коли я почав шукати стартери для Django, помітив, що багато з них вже застаріли або не покривають всі необхідні можливості для сучасного розробника. Деякі стартери чудові, але багатьох важливих функцій не вистачає, або вони виглядають недопрацьованими.

Тому я вирішив створити свій власний стартер для Django, який дійсно охоплює все, що потрібно для реальних проєктів. У світі Next.js є чимало … Читати далі

Я почав створювати стартовий шаблон для Django 🚀

Привіт, друзі! 👋

Якщо ви вже працювали з Django, то знаєте, що це чудовий фреймворк. Я отримував масу задоволення, працюючи з ним протягом багатьох років. Django має потужні можливості, чистий код і багато корисних функцій «з коробки». Але нещодавно, переглядаючи стартові шаблони для Django, я помітив одну цікаву річ…

Більшість стартерів або застаріли, або не покривають всі необхідні функції для сучасного розробника. Деякі з них дуже хороші, але багато чого не вистачає або вони виглядають неповними.

Тому я вирішив: Чому б не створити стартер, який справді покриває всі важливі моменти? У екосистемі Next.js є багато чудових стартерів — але Django … Читати далі