Django и Python

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

489 0

Заполнение поля datetime с auto_now_add в тестах

В процессе разработки тестов, иногда возникает необходимость, записать
в поле DateTimeFiled с параметром auto_now_add=True свою дату и время отличные от текущего.
Некоторые ради такой возможности даже отказываются от использования auto_now_add. 0_о
Но так делать не надо. Можно сделать так:


from datetime import datetime
from django.utils import timezone
from unittest import mock

def test_auto_now_add(self):
    mocked = datetime(207, 11, 26, 0, 0, 0)
    with mock.patch('django.utils.timezone.now', mock.Mock(return_value=mocked)):
        MyModel.object.create(
            ...
            created_at=timezone.now()
            ...
        )


В результате получим нужную дату и время в нашем поле

905 0

Разбор задачи со списком списков

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

 a = [[]]*3
 a[1].append(1)
 print(a)

После …

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

Литеральный синтаксис быстрее чем вызов конструкторов словарей и множеств

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

Варианты …

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

Упорядоченный список событий в python

В каком виде лучше всего хранить список событий в python.
Чаще всего я видел, что хранят в виде списка словарей.
Что-нибудь типа такого:

dt = datetime(2007, 11, 26, 0, 0) …
Читать далее
1116 1

Декоратор внутри класса это возможно!

Про декораторы знают все и как их делать написано много уже где.
Но вот про декораторы в рамках класса с доступом к параметрам класса надо еще поискать.
Декоратор внутри класса …

Читать далее
955 1

Генераторы и итераторы не всегда быстрее обычного for`а

Среди коллег разработчиков на python бытует мнение что генераторы и итераторы быстрее, чем перебор for`ом
Но это не всегда так. 
Вот пример:


def sum_times():
    ch = ['bad', 'good']
    data_list = …
Читать далее
770 0

Скорость конкатенации строк и списков

Без лишних слов замеряем скорость конкатенации строк:
 def concat_times():
    x = 'abc' * 10000
    y = 'def' * 10000
 
    time_start = datetime.datetime.now()
    z = x + y
    print(f'"+" Elapsed: {datetime.datetime.now() …
Читать далее
3204 0

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

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

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

---

Python 3.8+

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

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

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

Читать далее
1761 3

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

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

Подробнее
2190 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())


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

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

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