Библиотека Python разработчика | Книги по питону
19.5K subscribers
1.05K photos
391 videos
82 files
988 links
Полезные материалы для питониста по Фреймворкам Django, Flask, FastAPI, Pyramid, Tornado и др.

По всем вопросам @evgenycarter

РКН clck.ru/3Ko7Hq
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Самый простой способ добавить вход по волшебной ссылке с использованием Django ✉️

Статья объясняет, как реализовать вход через "магическую ссылку" в Django. Описаны этапы настройки кастомной модели пользователя, конфигурации email-бэкендов, создания ссылок для верификации, а также добавления необходимых представлений и шаблонов.

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

https://www.photondesigner.com/articles/email-sign-in

👉@BookPython
⌨️ Шпаргалка по Python

👉@BookPython
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Python предоставляет мощную библиотеку для работы с датой и временем: datetime. Интересный момент заключается в том, что объекты datetime имеют специальный интерфейс для поддержки часовых поясов (а именно атрибут tzinfo), но этот модуль поддерживает интерфейс лишь частично, оставляя остальную часть задачи другим модулям.

Наиболее популярный модуль для этой задачи — pytz. Однако сложность в том, что pytz не полностью соответствует интерфейсу tzinfo. Документация pytz указывает на это одной из первых строк: «Эта библиотека отличается от документированного API Python для реализаций tzinfo».

Нельзя использовать объекты часовых поясов pytz в качестве атрибута tzinfo. Если попытаться это сделать, можно получить абсолютно неожиданные результаты.


In : paris = pytz.timezone('Europe/Paris')
In : str(datetime(2017, 1, 1, tzinfo=paris))
Out: '2017-01-01 00:00:00+00:09'


Посмотрите на этот смещение +00:09. Правильное использование pytz выглядит следующим образом:


In : str(paris.localize(datetime(2017, 1, 1)))
Out: '2017-01-01 00:00:00+01:00'

Кроме того, после любых арифметических операций вам следует нормализовать объект datetime на случай изменения смещения (например, на границе периода летнего времени).


In : new_time = time + timedelta(days=2)
In : str(new_time)
Out: '2018-03-27 00:00:00+01:00'
In : str(paris.normalize(new_time))
Out: '2018-03-27 01:00:00+02:00'

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

👉@BookPython
Функция enumerate

Эта встроенная функция снабжает циклы счётчиком. Возвращает генераторный объект, который имеет метод, вызываемый встроенной функцией next: на каждом проходе цикла возвращает кортеж {индекс, значение}. Цикл for проходит по этим кортежам автоматически, что позволяет распаковывать их значения с помощью присваивания кортежей почти так, как в zip.


S = "stroka"

example = enumerate(S)
next(example) # -> (0, 's')



Пример использования:



shopping_list = ['яблоки', 'бананы', 'апельсины', 'хлеб']

for index, item in enumerate(shopping_list, start=1):
print(f"Пункт {index}: {item}")


👉@BookPython
Python backend

Python - Архитектура кода
Python - Базы данных и миграции
Python - Тестирование
Python - Тестирование
Нагрузочное тестирование
Нагрузочное тестирование (лайвкодинг)
Девопс, деплой, CI/CD. Часть 1
Девопс, деплой, CI/CD. Часть 2
Архитектура распределенных систем
Python - Дебаг - логирование - профилирование
Код-ревью
Python - Асинхронное программирование. Часть 1
Python - Асинхронное программирование. Часть 2
Отбор в IT компанию
Лекция Практики разработчиков
Интенсив по алгоритмам. Введение
Интенсив по алгоритмам. Разбор ДЗ 2

Все видео доступны на youtube

👉@BookPython