Web программирование

Сигнализация и логирование в Django с помощью сигналов

| Python

Допустм, есть представление django, которое работает с моделью Person. У модели есть поля firstname, age и lastname. Также есть сериализатор модели реализованный на DRF работающий также с моделью Person. В данной статье рассказывается, как реализовать журналирования изменений объекта Person, т.е. полей lastname, firtname, age если изменения производятся в Django-представлении и сериализаторе DRF.

Для реализации журналирования изменений объекта Person в Django и Django REST Framework можно воспользоваться сигналами (signals). Сигналы позволяют реагировать на определенные события в вашем приложении Django, такие как создание, обновление или удаление объектов, и выполнять определенные действия в ответ.

Читать дальше →

sys.path_hooks и sys.meta_path в языке Python

| Python

В Python sys.path_hooks и sys.meta_path - это два важных атрибута модуля sys, которые играют роль в процессе поиска и импорта модулей.

  1. sys.path_hooks:

    • Цель: sys.path_hooks используется для расширения механизма поиска импортируемых модулей. Он позволяет добавить "хуки" (зацепки) к процессу поиска, которые могут быть вызваны, когда Python ищет модуль в файловой системе.

    • Как работает: Хуки - это функции, которые принимают путь к файлу в качестве аргумента и должны возвращать объект, который может быть использован для создания модуля, если файл найден.

    • Примеры:

      • Например, можно использовать sys.path_hooks для поддержки импорта файлов с расширением .pyd или .so, которые обычно не используются Python по умолчанию.

      • Еще один пример - хуки, которые могут загружать модули из zip-архивов.

  2. sys.meta_path:

    • Цель: sys.meta_path используется для расширения механизма обнаружения модулей. Он позволяет добавить "мета-хуки" (мета-зацепки), которые могут перехватывать процесс поиска модулей и определять, как модуль должен быть найден.

    • Как работает: Мета-хуки - это классы, которые должны реализовывать методы __find_spec__() и __find_module__(), которые отвечают за поиск модулей.

    • Примеры:

      • Например, можно использовать sys.meta_path для реализации собственного менеджера пакетов, который будет искать модули в своих собственных репозиториях.

      • Другой пример - мета-хуки, которые могут импортировать модули из сети.

Читать дальше →

Компиляция python модуля в различных операционных системах

| Python

Иногда возникает необходимость компиляции python модуля в случаях, если вышел новый релиз и его пока не загрузили в пакетный индекс whl-пакетом. Это касается модулей реализованных на C/C++ использующих cpython c-api.

Читать дальше →