Формы Django:
- Создание своего собственного виджета, пример
- Создание своего собственного Field формы
- Соотношение FormField и RelativeField
- Переопределить as_p формы как as_div с возможностью редактирования стилей label-а
- Исходный код BoundField. Среди них есть label_tag
- Переопределение метода get_bound_field of Field формы
- Переопределение дефолтного as_table формы
- Исходный код Field
- Типы ошибок форм джанго, определяемые в error_messages
- Порядок полей в ModelForm
- Формы в CBV: переопределение post, на рус,
- Как удалить подсказки (если стоит)
- UserCreationForm с FormView. Оно же на русском. Примеры без cbv.
Навигация и медиа-файлы:
- url с аргументами
- Правильная настройка static и media папок по версии zetblog
- Статья с djangosimple по настройке MEDIA_ROOT
- Пример простой настройки с тостера media url и с python-script
- О настройке media на djbook — немного устарело, но принцип остался тот же
- Ссылки по медиа с qaru
- Тема MEDIA_URL не установлен в шаблоне с гару и про отображение ImageField тут и тут
- Медиа в шаблоне
- Как добавить картинки в шаблон и админку django c sharelink с настройкой openserver
- Почему не отображаются изображения и как их настроить с ru.stackoverflow.com
- Интересное решение для компрессии inline стилей и жс: вот,
Django Rest Framework:
- Быстрый старт
- Легкий старт на русском
- Postman. Краткий ликбез. Advanced Rest Client.
- Фильтрация по ListApiView, настройка окружения окружения для фильтров,
- Запуск сервера джанго внутри локальной сети
- Аутентификация в django rest framework + здесь чуть более подробная
- Авторизация (мануал на русском)
- Авторизация в джанго через JWT
- JWT плагин для drf и его альтернатива (из примера выше, см пип)
- Простейшая инструкция по JWT авторизации в дрф
- Смысл использования JWT,
- Плагин для авторизации (тч. аутентификации) через Digest Auth,
- Bearer-аутентификация и ее отличие от JWT
- Сохранение manyToMany раз, два, для ознакомления (не до конца решили проблему. Так что допустима самодеятельность)
- Кастомная валидация
- Обсуждение проблем с csrf.
- Авторизация в django-graphql
- JWT-авторизация в django-graphql
- Генерация документации на основе drf (drf-yasg).
Сигналы django:
- Очень просто и понятно
Модели django:
- Перевод документации по наследованию моделей на djbook. Все по полочкам, с избытком
- Метапрограммирование моделей в оф. док
- Использование отношений многие-ко-многим в Django на кибере и на djbook
- Фильтры ManyToMany
- Методы QuerySet
- Создание своего собственного поля модели
- Обратные связи тут,
- Поля моделей джанго
- Использование F для запросов
- Query Expressions — самая непростая тема
- Работа с PIL
- Репликация Баз Данных MySQL и PgSQL
- Использование database views в django orm,
Сложные фильтры:
- Добавление having вручную
- OuterRef без SubQuery
- Классическое применение SubQuery
- Вложенные запросы
- Обновление множества однимзапросом (см пункт 6, некототорые другие советы под сомнением)
- Ограничение времени выполнения запроса и brin-индексы
- Оптимизации in-запросов на хабре
- Оптимизация запросов для m2m
- Использование rawSQL и explain для оптимизации
- Использование values_list для создания подзапроса (не проверено)
- Про brin-индексы
- Использование database vew: вручную, с пакетом.
Кастомизация админки:
- Официальная документация
- Кастомизация inline-сетов (ограничение выборки)
Интернационализация:
- Перевод оф. документации
- Как добавить свои фразы для перевода
- Как добавить свой файл для перевода — устаревшее на русском
- Как добавить свой файл перевода — на английском
- Оф. документация
- Обсуждения ошибок старых версий — тут и тут; — кодировки: тут, тут и тут,
Аутентификация и авторизация:
- Выписка из мануала
- Использование HttpBasicAuth в джанго (rest)
- Ручная реализация HttpBasicRequest
- Плагин для django c HttpBasucAuth
- Авторизация через RemoteUserBackend либо устаревшая на русском
- Иcпользование RemoteUserBackend вместе с ModelBackend
- Спецификация по OAuth 2.0 фреймворк
- Общая информация про Digest-авторизацию
- HttpDigest-плагин для джанго. Он же на гитхаб.
- Авторизация через allauth.
CBV:
- Методы get_queryset и get_context_data
- Пример использования CreateView из оф. док
- Кастомная форма в CBV
- Пример DetailView, подробно, на русском
- Поверхностно на хабре
- Список всех коробочных CBV
- Коробочные Mixin-ы
- Пример использования Mixin-а
- Обработка метода post в CBV
Шаблоны:
- Собственные теги
- url-ы в шаблонах django
- Язык шаблонов
- Встроенные шаблонные теги
- Использование jinja в качестве шаблонизатора. Здесь подробные мануалы по jinja. Пакет для старого джанго (сейчас не вижу в нем смысла, но несколько вещей подчерпнул из их доки),
Настройки:
- Установить часовой пояс в Джанго. Оф документация.
- Использование activate и pytz
- Использование middleware приложения для определения часового пояса пользователя
- Еще один вариант middleware для часового пояса. Там же идея с Field.
- Еще варианты на тостере
- Создание кастомных команд для джанго,
Работа со временем:
- Работа со временем с со
AJAX:
- Получение csrf-токена для AJAX
- Оформление AJAX без jQuery
- Красивое получение csrf-токена без куки
- Принцип работы с long pool на джанго
- Подробный пример с long poll
- Лонг пул из английского самоучителя
- Long poll на github
Асинхронное и параллельное выполнение задач в джанго:
- Асинхронные представления
- Асинхронная django-orm like орм — tortoise-rm (sqlite, mysql, pgsql)
- Знакомство с django-channels
- Установка и настройка Celery ( + пример использования email как логина как бонус)
- Использование Airflow вместо Celery (надстройка над celery), немного про интеграцию с джангой,
Альтернативные орм:
- peewee — быстрый синхронный орм. Быстрый старт (8400 stars)
- sqlalcemy — функциональный синхронный орм. Быстрый старт. Есть поддержка асинхронности в рамках beta (see more detail). (3900 stars)
- tortoise-orm — асинхронная orm, inspired by django orm (интерфейс похож на django orm)) (2100 stars)
- orm — асинхронная орм, основанная на sqlalchemy, но по интерфейсу похожа на django orm от создателей uvicorn и starlette (1300 stars)
- ormar — асинхронная орм, основанная на sqlalchemy, но по интерфейсу похожа на django orm. Quick start (300 stars)/ руководство по миграции
- gino — асинхронная оболочка для sqlalchemy. По интерфейсу ~ sqlalchemy (2200 stars)
- pony — заявлена как быстрая синхронная орм. Вопрос к отсутствию миграций. Своеобразный синтаксис. Стабильность и покрытие возможностей остается под вопросом (2600 stars)
Плагины:
- django-debug-toolbar — немного о нем, рабочая конфигурация.
- Haml vs django (неактуально): Shpalm
- Еще один halm for django (неактуально) — HamlPy
- HAML для джанго (django-hamlpy)
- Redis + установка redis под Windows
- Ошибка при работе с RabbitMQ. И сам rabbitmq плагин, простые примеры
Тесты:
- Создание тестов для джанго
- Руководство по созданию юнит-тестов джанги от мозилла
- Явное указание тестов в случае ошибок импорта (на 2.2 не победил)
- Использование requests для написания тестов для django
- Django и selenium
- Офф док по тестированию с драйвером селениума
- Нагрузочные тесты: с помощью loadtest, apache banchmarks, с помощью K6,
Деплой сайта на сервер:
- Deploy с помощью fabric
- Подробное описание работы с fabric (со старой версией, но не суть))
- Настройка кастомных путей static при деплое django
- Задание кастомного пути для обслуживания (через .htaccess) media-файлов. Либо если не получится, то временно вот этот вариант (вполне рабочий)
- Рекомендации по развертыванию от Mozilla
- Рекомендации по развертыванию на Beget
- Шпаргалка по настройке .htaccess
- Параметры для условий в .htaccess
- Генератор секретных ключей для django,
- Кластеризация на Windows с помощью Failover, альтернативная инструкция (все инструкции написаны под Windows Server, на обычной винде могут не работать) и вот, а так же доп инфо, доп инфо, доп. инфо,
- Кластеризация докер-контейнеров с помощью docker swarm, еще одна инструкция, и пример (на англ., лучше начать с него. там все понятнее),
- Кластеризация на linux без использования docker swarm (и k8s): с помощью Corosync и Pacemaker, с помощью VRRP, c помощью Proxmon VE (интегрируется с KVM или OpenVZ), (лучше уже swarm)
- Запуск daphne качестве worker-а для channels, доп. пример тут, дока по runworker, (невозможно запустить на одном порту несколько (не подходит для кластеризации) + было выяснено, что запуск дафне в качестве воркера приводит к ошибкам (подобно uvicorn) и засоряет редис «хвостами». Не рекомендуется к использованию)
- Установка Kubernetes на Windows, другая инструкция (офф), сравнение kubernetes с конкурентами,
- Apache Mesos как альтернатива swarm и kubernetes,
- Кластеризация с помощью nginx, балансировка нагрузки, и вот, оптимизация apache под Windows,
- Балансировка с помощью Apache, мастерская работа по редактированию конфига Apache через vim+grep, директивы apache (справочник),
- Отличие мультипроцессинга nginx от apache, настройка многопоточности в nginx (оригинал на medium и в офф доке), пример конфига, подробный разбор оптимизации, детали реализации, нюансы этих деталей, простая и подробная инструкция (если глубоко не вникать, можно дальше не идти),
- Настройка мультипроцессинга для Apache,
- Кластеризация redis раз, здесь команды, полезные после развертывания (а так же краткая инструкция), три, альтернативный конфиг кластера от Grokzen. Очередная простая инструкция (самая понятная, без использования create-cluster), готовый образ с кластером для развертывания (там есть ссылка на докер-композ конфиг) (redis.conf лежал по пути `/opt/bitnami/redis/mounted-etc/redis.conf` ), парольная защита для redis, либа на пайтоне для управления кластеризацией redis (redis-trib),
- Построение сетей в docker-compose,
- Наследование в docker-compose,
- Запуск демонов в одном контейнере с помощью system.d, systemd на пальцах, простейший,
- Документация по haproxy, настройка haproxy, настройка с веб-сокетами,
- Настройка балансировки с помощью lighthttpd,
- Самый быстрый http-сервер: litespeed, гайд по установке и настройке,
- Настройка minikube из под bridge c хост-машины
SEO:
Бойлерплэйты:
- CookkieCutter с allauth, gulp, базовой настройкой Celery и вебсокетов. Лишнее: bootstrap
Полезные модули для python:
- Line-profiler — профилировщик функций (не встал. Требудет cmake/visualc++)
- Еще один профилировщик для джанго — django-extensions (гитхаб) (на django 2.2 выдавал ошибку, даж не захотел разбираться)
- Дебаггеры (в тч. и для прода), а так же удобные профилировщики здесь (довольно старая статья, так что с высокой долей вероятности бОльшая часть из них работать не будут
- Интересный аналог line_profile — pprofile. Легкий, удобный и интересный, но еще более оверхедный, чем cProfile
- Docker-файл для django. (бонус — cправка по докер)
- Использование pyinstrument для профилирования django,
- Multoprocessing на стероидах: Ray,
- Развертывание с hypercorn, документация (у меня не завелась, надо вникать)
Просто полезные пакеты для vps:
- Использование supervisor для мониторинга процессов
- Установка Fastpanel на vps (бесплатная версия),
- Бесплатные панели для управления vps
- Исследование трафика с помощью Webalizer
Полезное для devops:
- Где хранится физически бд MySQL на linux
- Пакет для nginx hotreload (бесплатный, называется nginx unit)