Django и Python

Раздел про веб-разработку.
Делюсь знаниями и опытом.

739 0

Последние изменения в стандартной библиотеке Python

Это копия статьи с Хабра.

Мне информация показалась полезной потому сохраню у себя на память.

---

Python 3.8+

Как изменилась стандартная библиотека Python за последние годы

Когда выходит очередная версия Python, все внимание достается новым фичам языка: моржовому оператору, слиянию словарей, паттерн-матчингу. Еще много пишут об изменениях в асинхронной работе (модуль asyncio) и типизации (модуль typing) — эти модули на виду и бурно развиваются.

Остальным модулям стандартной библиотеки достается незаслуженно мало внимания. Хочу это исправить и рассказать, что интересного появилось в версиях 3.8–3.10.

Читать далее
754 0

Поле со списком в форме для текстового поля в модели

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

Подробнее
662 0

12 почти однострочных конструкций от канала Digitalize

Набор полезных однострочных и почти однострочных конструкций python от youtube канала Digitalize.
Хоть все они давно известны, но почему-то далеко не все их используют ;)

1. Распаковка

   x, y, z = input().strip().split()

2. map: Выполнение функции для каждого элемента последовательности

   x, y, z = map(int, (x, y, z)
   # Объединяем с предыдущим
   x, y, z = map(int, input().strip().split())


Дальше по списку
1262 0

Функция для получения количества записей в моделях приложения Django

Иногда надо получить количество записей в моделях приложения django одной командой.
Если у вас до 10 моделей то можно конечно получить эти цифры через shell или функцией с count для всех моделей,
а если моделей сотни, а если тысячи 0_о?
Или мы не знаем и знать не хотим названия моделей?
Код функции для вывода количества записей в моделях приложения
1636 0

Генерация схемы моделей Django проекта без IDE

Понимание текущей схемы моделей проекта Django важно для успешной разработки.

Генерировать подобные схемы умеют продвинутые IDE типа PyCharm.
Но есть возможность генерации без IDE из консоли.
Для этого я использую django-extensions и pygrafviz и получаю что-то типа этого:


Для создания подобных схем нам необходимо:

Читать далее
1098 0

Удаление дублей и установка составного уникального ключа

Иногда случается, что при создании моделей мы забываем про ключи для обеспечения уникальности полей. А вспоминаем об этом только когда начинают сыпаться ошибки из-за накопившихся дублей.

Эта заметка о решении этой проблемы "одним ударом"

Для этого мы сделаем самописную миграцию с небольшой функцией для удаления дублей
Читать далее
1153 0

Повышаем уровень сертификата SSL от Lets` Encrypt NGINX до уровня A+

После очередной установки сертификата SSL от Lets`Encript и проверки его на ssllabs.com получил не радующий результат:


А хотелось бы такой:


Порыл гугл и как всегда нарыл полу-работающий рецепт. Путем некоторых танцев с бубном и обработки напильником получил работающий на сегодняшний момент рецепт.

Изменяем файл /etc/letsencrypt/options-ssl-nginx.conf следующим образом...

Читать далее
1659 0

Типовой шаблон проекта на Django

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

Как всегда я использую свой стандартный стэк: Debian/Ubuntu + Python 3.* + PostgreSQL + NGINX + virtualenv + Django

Структура моих проектах основывается на рекомендациях Two Scoops of Django 1.11 с учетом моего стека и выглядит следующим образом:

Читать далее
1491 0

Отображение русских символов в JSON полях админки Django

Часто в проектах использую JSON поля PostgreSQL.

При этом в админке Django они отображаются так как лежат в базе. Выглядит это примерно так:

{
    "1": "\u041f\u0435\u0440\u0432\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435",
    "2": "\u0412\u0442\u043e\u0440\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435"
}

Естественно это не по человечески и хотелось бы видеть в нормальном виде.

Для этого делаем следующее:

Читать далее
1285 0

Django кастомная миграция с добавлением установочных данных

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

Можно конечно временно обозначить связывающее поле ForeignKey как blank=True и заполнить после того как в новой модели появятся данные, а потом убрать blank=True.

Но это куча лишних действий и две миграции вместо одной.

Можно сделать тоже самое одной миграцией с добавлением в новую модель первой записи.

Для этого надо выполнить следующие шаги:

Читать далее

Контактные данные

 Россия, г. Москва