Эти библиотеки позволяют веб-разработке Django делать больше с меньшими затратами

Python

предисловие

DjangoЭто веб-фреймворк, разработанный на языке Python, который популярен благодаря своим мощным функциям и быстрой разработке. Я получил 47K+ звезд на Github, и его сообщество и окружающие библиотеки также чрезвычайно активны. Позвольте мне поделиться некоторыми библиотеками, которые я часто использую в своей работе.Если вы используете их правильно, вы получите вдвое больший результат с половиной усилий, значительно повысить эффективность разработки, и работать по 3 часа в день., остальное время можно хорошо грести (учиться)!

В дополнение к листингу я также продемонстрирую фактическое использование, чтобы каждый мог фильтровать в соответствии со своими потребностями. Следующий контент длинный, рекомендуется собрать его перед прочтением.

Все библиотеки в этой статье были протестированы на Django 2.1 и выше, а некоторые библиотеки можно использовать на Django 1.11 и выше.

текст

Django Rest Framework

Django Rest Framework — моя самая рекомендуемая и обязательная библиотека для разработки сервисов Django. Может быть, его популярность настолько велика, что мне не нужно его представлять, я кратко представлю его использование (подробности не достаточно, чтобы написать 😂)

Django Rest Framework предоставляет Django набор стандартных API Restful и предоставляет ряд вспомогательных функций, таких как аутентификация, аутентификация, ограничение скорости и т. д., а также предоставляет тестовый интерфейс пользовательского интерфейса.

pip install djangorestframework

В сочетании с моделью Django для разработки Restful API требуется всего 3 шага.

1.1 Создайте класс сериализатора Serializer of Model

Сериализатор — это класс сериализации, используемый для преобразования между объектами модели и структурами API Json. Простейшая реализация показана ниже.

Базовое поле модели имеет соответствующее автоматическое сопоставление поля сериализатора, дополнительная запись не требуется. В то же время он также предоставляет некоторые специальные поля, такие как идентификатор внешнего ключа, который преобразуется в другие поля, и даже весь связанный объект может быть введен во время сериализации.

1.2 Создать представление

Представления делятся на три категории: представления методов, представления классов и наборы представлений на основе модели.

а) Представление метода

Представление метода — это метод, похожий на представление метода Django, просто добавляющий декоратор.

Параметры метода api_view могут ограничивать метод Http, по умолчанию — GET, и, наконец, возвращать объект Response.

б) представление класса

Представление класса заключается в сопоставлении методов Http с методами класса.

c) Представление ViewSet

Представление ViewSet проще и может напрямую связывать модель и представление.

1.3 Маршруты привязки

Наконец, можно получить доступ к маршруту привязки.

Либо используйте привязки пути Django, либо используйте объект маршрутизатора.

Есть и другие мощные функции, такие как аутентификация, аутентификация и ограничение скорости.Содержимого слишком много, поэтому я не буду их здесь раскрывать.

django-filter

Эта библиотека предоставляет функции фильтрации для API Django, а при использовании с Rest Framework мощный API фильтрации для моделей может быть предоставлен в одной строке кода.

pip install django-filter

Затем вы можете фильтровать по параметрам URL.

http://example.com/api/users/1/?name=huoyan&age=20

Django CORS Headers

Для архитектуры, разделенной интерфейсом и сервером, во внутренний API необходимо добавить заголовки CORS, чтобы обеспечить междоменный доступ. Вы можете добавить его в каждую соответствующую шапку самостоятельно.Конечно, есть готовые колеса, почему бы не сделать это?

pip install django-cors-headers

Он очень прост в использовании, просто добавьтеinstalled_appиmiddlewaresВот и все.

В то же время он предоставляет функцию пользовательской настройки, которую можно настроить непосредственно в настройках Django.

CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_METHODS = (
    'DELETE',
    'GET',
    'OPTIONS',
    'PATCH',
    'POST',
    'PUT',
    'VIEW',
)

CORS_ALLOW_HEADERS = (
    'XMLHttpRequest',
    'X_FILENAME',
    'accept-encoding',
    'authorization',
    'content-type',
    'origin',
    'user-agent',
    'x-csrftoken',
    'x-requested-with',
    'Pragma',
)

Django Debug Toolbar

Панель инструментов отладки Django предоставляет мощную панель отладки для тестирования. Вы можете напрямую просматривать в браузере соответствующую конфигурацию, заголовок HTTP, SQL, журналы и т. д. Это очень практично и должно использоваться для разработки и отладки.

pip install django-debug-toolbar

Он также очень прост в использовании.

необходимо настроитьinstalled_app, пути к статическим ресурсам иMiddlewares.

Наконец, добавьте маршрут и включите его, когда Debug имеет значение True.

Затем мы добавим панель отладки сбоку при доступе к API или просмотру.

Django Environ

Для онлайн-сервисов необходимы разные конфигурации в нескольких средах, для чего требуется среда Django Environment. Django Environ упрощает включение переменных среды в конфигурацию настроек Django.

pip install django-environ

Обычно мы пишем это в settings.py

Затем получите значение параметра, который необходимо настроить динамически.

Мы можем загрузить конфигурацию через переменные среды или файлы переменных среды (единственный способ напрямую прочитать переменную среды ENV_FILE).

.env файл, подобный этому (включение/выключение автоматически преобразуется в логическое значение)

DEBUG=on
CORS=on
LOG_LEVEL=INFO
LOG_FILE=app.log

В то же время конфигурация базы данных и кеша может быть напрямую преобразована в переменную среды.

settings.pyнастроено так

Затем в переменной среды или в файле .env напишите так

DATABASE_URL=psql://postgres:123456@127.0.0.1:5432/postgres
CACHE_URL=rediscache://127.0.0.1:6379/1

Это лучше, чем использоватьos.environ.getЧто хорошего в загрузке переменных окружения?

  • Обеспечивает загрузку файла переменных окружения, если это локальная отладка, то конечно удобнее всего записывать все переменные в файл.
  • Предоставляет единое место для записи начального значения переменных среды (место инициализации) и может указывать тип данных переменной.
  • Поддержка преобразования типов данных, поскольку все значения переменных среды являются строками, преобразование типов переменных помогает нам удобно решать проблемы преобразования.
  • Поддерживаются многострочные переменные среды.
  • Базы данных, Redis и т. д. поддерживают значение переменной среды URL, нет необходимости в куче переменных среды.
  • Поддерживаются ссылки на переменные среды.

Django-Redis

Использование кэширования в Django очень распространено, а простым и удобным в использовании является Redis. Библиотека Django redis может напрямую настроить Redis в качестве кэша Django или серверной части сеанса, что очень просто.

pip install django-redis

Конфигурация в settings.py

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

CACHES = {
    'default': env.cache(),
}

переменная среды

CACHE_URL=rediscache://127.0.0.1:6379/1

Использовать в качестве серверной части сеанса

SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "default"

django-rest-framework-simplejwt

Метод аутентификации по умолчанию в Django Rest Framework основан на Django (например, Session или Token).Если вам нужен метод JWT, также доступны готовые колеса.

pip install djangorestframework-simplejwt

Изменить конфигурацию аутентификации Rest Framework

Затем добавьте API получения и обновления токена.

Используйте следующий запрос, чтобы получить токен

curl \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"username": "admin", "password": "admin"}' \
  http://localhost:8000/api/token/

{
  "access":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX3BrIjoxLCJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiY29sZF9zdHVmZiI6IuKYgyIsImV4cCI6MTIzNDU2LCJqdGkiOiJmZDJmOWQ1ZTFhN2M0MmU4OTQ5MzVlMzYyYmNhOGJjYSJ9.NHlztMGER7UADHZJlxNG0WSi22a2KaYSfd1S-AuT7lU",
  "refresh":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX3BrIjoxLCJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImNvbGRfc3R1ZmYiOiLimIMiLCJleHAiOjIzNDU2NywianRpIjoiZGUxMmY0ZTY3MDY4NDI3ODg5ZjE1YWMyNzcwZGEwNTEifQ.aEoAYkSJjoWH1boshQAaTkf8G3yn0kapko6HFRt7Rh4"
}

Обновить токен после истечения срока действия временного токена

curl \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"refresh":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX3BrIjoxLCJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImNvbGRfc3R1ZmYiOiLimIMiLCJleHAiOjIzNDU2NywianRpIjoiZGUxMmY0ZTY3MDY4NDI3ODg5ZjE1YWMyNzcwZGEwNTEifQ.aEoAYkSJjoWH1boshQAaTkf8G3yn0kapko6HFRt7Rh4"}' \
  http://localhost:8000/api/token/refresh/

{"access":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX3BrIjoxLCJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiY29sZF9zdHVmZiI6IuKYgyIsImV4cCI6MTIzNTY3LCJqdGkiOiJjNzE4ZTVkNjgzZWQ0NTQyYTU0NWJkM2VmMGI0ZGQ0ZSJ9.ekxRxgb9OKmHkfy-zs1Ro_xs1eMLXiR17dIDBVxeT-w"}

В проекте, где фронт и бэкенд разделены, мы используем перехватчик axios для автоматического обновления фронтенда, бизнесу не нужно беспокоиться, а код очень простой.

Grappelli

Grappelli — это скин для административного интерфейса Django, обеспечивающий более удобный интерфейс.

pip install django-grappelli

Он также очень прост в использовании.

настроить егоinstalled_app

INSTALLED_APPS = (
    'grappelli',
    'django.contrib.admin',
)

добавить маршрут

urlpatterns = [
    path('grappelli/', include('grappelli.urls')), # grappelli URLS
    path('admin/', admin.site.urls), # admin site
]

Добавить обработчик контекста запроса

TEMPLATES = [
    {
        ...
        'OPTIONS': {
            'context_processors': [
                ...
                'django.template.context_processors.request',
                ...
            ],
        },
    },
]

Затем просто повторно обработайте статические файлы.

python manage.py collectstatic

django-celery-results/django-celery-beat

Если вашему сервису Django нужно использовать Celery для асинхронных задач, эти две библиотеки неплохие, поэтому они написаны вместе.

django-celery-resultsОн использует ORM Django в качестве результата хранения асинхронных задач Celery.Когда результаты асинхронных задач необходимо хранить и анализировать в течение длительного времени, его можно использовать для хранения в базе данных, настроенной Django.

pip install django-celery-results

Простая конфигурация

Выполнить создание базы данных

python manage.py migrate django_celery_results

иdjango-celery-beatЭто передача конфигурации временных задач Celery в базу данных Django для хранения.Это очень полезно, если фон управления нашим бизнесом требует настройки временных задач.

pip install django-celery-beat

Простая конфигурация

Выполнить создание базы данных

python manage.py migrate

Наконец, укажите планировщик при запуске Celery Beat

celery -A proj beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler

постскриптум

Я так много написал сегодня. Это избранные библиотеки, накопленные разработкой Django за последние несколько лет. Если у вас есть какие-либо вопросы, пожалуйста, прокомментируйте и обсудите со мной. Если количество пользователей отдельных библиотек велико, вы можете написать подробное руководство по использованию и избеганию ям. Если вы найдете это полезным, не стесняйтесь, как это!

Я Хуояньцзюнь, пусть мое письмо рассеет одиночество души.

Ссылаться на