Обновить
4.5

Django *

Фреймворк для веб-приложений на Python

Сначала показывать
Порог рейтинга
Уровень сложности

Метакласс в моделях — Django

Время на прочтение2 мин
Количество просмотров27K

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

Метамодель (Meta Model) - это, по сути, внутренний класс вашего класса модели. Метамодель в основном используется для изменения поведения полей вашей модели, таких как изменение опций заказа, verbose_name, и многих других параметров. Добавление класса Meta к вашей модели совершенно необязательно. Для того чтобы использовать метамодель, вы должны добавить класс Meta в вашу модель, как показано ниже: 

Читать далее

Фильтр по интервалу дат в админке Django

Время на прочтение2 мин
Количество просмотров5.9K

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

Пришлось изобретать велосипед самому. А недавно выкроил время и оформил этот код в виде отдельной библиотеки.

Читать далее

Celery: проясняем неочевидные моменты

Время на прочтение8 мин
Количество просмотров94K

Да, действительно, в этом посте не будет гайда, как поднять Celery в Django. Это статья для тех, кто уже пощупал Celery и хочет погрузиться в детали.

Мотивацией перевести эту статью были следующие вопросы, на которые я не знал ответа: при запуске создается процесс или поток? В какую очередь попадают отложенные задачи с ETA? А какие бывают очереди (спойлер: она не одна)? А в какой момент задача удаляется из очереди? Если я создам задачу с ETA=завтра_в_12:00, она ровно в этот момент и выполнится (спойлер: нет)?

Ответы на все эти вопросы в статье, велком!

Запустить таску

Аутентификация в Django при помощи Metamask

Время на прочтение4 мин
Количество просмотров5.3K

Сегодня мы напишем простой сниппет для аутентификации пользователей на сайте при помощи кошелька Metamask. Замечу, что данное решение максимально изолировано от фреймворка. Вы сможете легко адаптировать его не только к Django, но и к Flask, Sanic, Starlette, Aiohttp и т.п.

Читать далее

Необычный Python в обычных библиотеках

Время на прочтение9 мин
Количество просмотров33K


Специалист в Data Science из Amazon буквально прочитал код самых распространённых библиотек Python. В этом материале он делится секретами работы с Python, о которых узнал из этих библиотек. За подробностями приглашаем под кат к старту нашего флагманского курса по Data Science:

Узнать больше

Django и PWA

Время на прочтение6 мин
Количество просмотров12K

Всем привет! Гуляя по Хабру, мне ни разу не доводилось обнаружить статью на тему Django + PWA. А ведь тема интересная (лично мне пришлось потратить 4 дня на то, чтобы с ней разобраться). И дабы сэкономить ваше время, в данной статье я попытался представить достаточно простой способ для создания прогрессивного веб приложения (PWA) вместе с Django без сторонних библиотек.

Читать далее

Как стажёр оптимизировал запросы и нашел баг в Django

Время на прочтение10 мин
Количество просмотров21K

Привет! Меня зовут Иван, я бэкенд-разработчик-стажёр в KTS.

Недавно я нашел баг в Django, создал тикет с исправлением и его приняли.

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

Читать далее

Как мы платежный шлюз тестируем

Время на прочтение10 мин
Количество просмотров8.8K

Всем привет! Сегодня мы поговорим об интеграционном тестировании платежного шлюза, но перед этим расскажу немного про нашу команду и наш проект. Мы (ContactPay) — самостоятельный финтех-стартап внутри QIWI, строим высокопроизводительный отказоустойчивый платежный шлюз и соответствуем стандартам безопасности PCI DSS. 

Как платежный шлюз мы интегрированы со множеством внешних API, это могут быть и платежные системы, и сторонние сервисы мониторинга, антифрода, KYC (know your customer) и так далее. 

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

Мы стараемся писать корректный код с наименьшим количеством  багов. Код должен быть читаемым, самодокументируемым и поддерживаемым. Кроме того, он должен быть безопасным, так как мы  финтех и у нас PCI DSS, это накладывает определенные требования к безопасности. А ещё код должен быть тестируемым. 

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

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

Читать далее

Выгрузка отфильтрованных пользователем данных из таблицы в админке Django

Время на прочтение4 мин
Количество просмотров3.7K

Генерал Венделер обладал редким даром излагать свои решения в краткой, ясной и доходчивой форме. (С) х/ф "Приключения принца Флоризеля."

Коллега обратился с запросом.

"Хочу забрать в свой уютный екзель данные с корпоративного сайта прямо в том виде, как я их там отфильтровал и отсортировал. Кнопку такую хочу рядом с табличкой сайта."

Сайт сделан на админке Django. Будем реализовывать это лапидарное ТЗ от коллеги.

Поехали

Pet-проект для обучения или как я в одиночку писал Helpdesk

Время на прочтение6 мин
Количество просмотров29K

Ранее, у меня уже был опыт использования Helpdesk систем, но по разным причинам они не были внедрены у нас на предприятии. Хорошая возможность научится программировать, подумал я, и преступил к написанию собственного helpdesk’a.

Читать далее

Все не то, давай по-новой или модерация объектов в Django Rest Framework

Время на прочтение17 мин
Количество просмотров7.2K

— Ты не работал с пакетом django-moderation? И если нет, были ли у тебя задачи по модерации объектов, а конкретно: пользователь предлагает изменения, а другой пользователь либо отклоняет, либо принимает их?

— Не, не делал такого. Вот я все таки ох обескуражен от твоих занятий. Зачем такое вообще нужно?

... как всегда вырвано из контекста.

Читать далее

Ближайшие события

Умная кухня

Время на прочтение5 мин
Количество просмотров4.1K

IT в помощь готовой еде.

Любому руководителю важна информация, отражающая скорость и качество работы области, за которую он отвечает. В 2020 году мы в Х5 Tech начали поддерживать производство готовой еды Smart Kitchen («Фабрика кухни») и изучать его внутренние процессы. Оказалось, что руководители поздно получают важную для бизнес-процессов информацию. К примеру, отчёты о сроках отгрузки или списанных позициях IT-платформа считает лишь к середине или даже концу следующего дня.

Читать далее

Парсинг для взрослых или Инфраструктура для промышленного парсинга

Время на прочтение7 мин
Количество просмотров20K

В студенческие годы я написал на заказ много парсеров магазинов и социальных сетей. Со временем парсеры усложнялись и из скриптов превращались в полноценные веб-приложения c базой данных и Rest API. В статье описан шаблон веб-приложения, который использую для создания парсеров.

Читать далее

История одного CRUD'а

Время на прочтение17 мин
Количество просмотров7.3K

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

Эта история одной боли и попытке не просто "принять обезболивающее", а реально излечить её. Поэтому готовьтесь переварить лонгрид.

Читать это всё...

Платим пользователям, не платим за рекламу, или подключение системы вознаграждений на сайт в 3 простых шага

Время на прочтение5 мин
Количество просмотров2.8K

Для того чтобы получить полезный трафик не обязательно платить за размещение рекламных постов и баннеров на сторонних площадках и тратить на это значительную часть своего рекламного бюджета. Уже давно вошли в моду системы лояльности, которые позволяют финансово вознаграждать своих пользователей за активность в приложении. Это своего рода внутренний арбитраж трафика: мы закупаем активность своих же пользователей в обход посредников. Чтобы это реализовать потребуется несколько часов свободного времени и капелька желания.

Читать далее

Анонимизация базы данных или как быть уверенным, что ты не нарушаешь закон “О персональных данных”

Время на прочтение22 мин
Количество просмотров14K

В настоящее время практически все ИТ-продукты работают с персональной информацией пользователя: ФИО, телефон, e-mail, паспортные и другие идентифицирующие данные. Для  обеспечения защиты прав и свобод, человека и гражданина при обработке его персональных данных в Российской Федерации существует Федеральный закон от 27.07.2006 N 152-ФЗ “О персональных данных”.

Согласно пункту 2 статьи 5 обработка персональных данных должна ограничиваться достижением конкретных, заранее определенных и законных целей, а в статье 6 установлено, что обработка персональных данных осуществляется с согласия субъекта персональных данных. Все это накладывает определенные ограничения на разработку программных продуктов и заставляет разработчиков думать о возможных последствиях несоблюдения норм законодательства.

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

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

Читать далее

Tile server на коленке: навигация по старинным картам

Время на прочтение5 мин
Количество просмотров9.6K

Я являюсь full stack разработчиком на культурно-историческом IT портале Königsland, который успешно начал свою работу примерно месяц назад. Этот ресурс посвящается культуре и истории Восточной Пруссии и является своеобразной летописью времен, которая больше всего напоминает вирутальный музей, где можно получить довольно полную информацию об истории этого великого края, а эта информация пополняется по мере возникновения у меня свободного времени.

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

Читать далее

Не самые популярные методы Django ORM

Время на прочтение7 мин
Количество просмотров28K

Все мы знаем, что Django предоставляет ORM прямо из коробки, что не позволяет нам писать SQL-запросы. В этом механизме есть большой потенциал. Однако большинство из нас знакомы только с методами filter(), get(), update() и delete() из Django ORM.

В Django ORM есть много других опций, поэтому у нас все же возможность использовать функционал традиционных SQL-запросов. Сегодня в статье я вам про него расскажу.

Читать далее

Вклад авторов