Category index for “django”

  • SQLALchemy vs Django ORM

    SQLALchemy vs Django ORM

    Если большую часть времени вы работаете с Django ORM и вам надо перейти на SQLALchemy - то вы встретите ряд концептуальных отличий. В этом посте опишу часть из них, на мой взгляд заметных больше всего.

    Все примеры для SQLAlchemy буду приводить в асинхронном коде, в контексте PostgreSQL. Версия Django - 4.2, SQLALchemy - 2.0.

    Полные примеры можно найти тут https://github.com/st4lk/sqlalchemy-vs-django-orm, в тексте для краткости код приведен не полностью.

    Коментарии Читать далее
  • Ловушка при подсчете связанных объектов в Django

    Ловушка при подсчете связанных объектов в Django

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

    Коментарии Читать далее
  • Django: сигнал или метод модели?

    Django: сигнал или метод модели?

    Когда нужно написать какой-либо функционал, который должен быть выполнен при сохранении django модели, у меня всегда возникал вопрос - где его лучше реализовать. В сигнале или в методе save() модели? Давайте разберемся, что и в каких ситуациях более удобно.

    Коментарии Читать далее
  • Пробуем JSON в Django и PostgreSQL (и сравниваем с MongoDB)

    Пробуем JSON в Django и PostgreSQL

    В Django 1.9 будет добавлено поле JSONField, его можно использовать с базой данных PostgreSQL >= 9.4. Давайте попробуем с ним поработать и оценить, насколько оно удобно.

    Коментарии Читать далее
  • OAuth и django rest framework

    Star

    OAuth и django rest framework

    Тема избитая, но мне не удалось найти готового решения, которое полностью бы меня устроило. Поэтому пишу сам :).

    Итак, у нас есть “одностраничный” веб сайт, который общается с бекендом посредством REST API. Клиентская часть может быть написана с помощью ember, angularjs или чего-то подобного. Бекенд - django rest framework (DRF). И есть тривиальная задача - добавить вход через социальные сети (OAuth протокол).

    Коментарии Читать далее
  • Отладка SQL в django тестах

    Отладка SQL в django тестах

    В django тестах можно замерять количество сделанных SQL запросов:

    def test_home(self):
        with self.assertNumQueries(1):
            response = self.client.get('/')
        self.assertEqual(response.status_code, 200)
    

    Если код в контексте assertNumQueries сделает иное количество обращений к БД, чем ожидается (здесь 1), то тест выдает ошибку. Но когда такой тест не проходит, бывает трудно определить лишний отправленный запрос. Для отладки такого случая удобно вывести в консоль отправленные SQL запросы. Далее опишу, как этого добиться.

    Коментарии Читать далее
  • Подключение celery к django

    Подключение celery к django

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

    Хочу собрать все в одном месте.

    Коментарии Читать далее
  • Вложенные SQL запросы в Django

    Вложенные SQL запросы в Django

    Вы знали, что Django ORM умеет делать вложенные SQL запросы? К своему стыду я узнал это не так давно.

    Коментарии Читать далее
  • Отправка писем в django проекте с помощью сервиса mandrill

    Отправка писем в django проекте с помощью сервиса mandrill

    Отправлять email сообщения с сервера можно просто по SMTP протоколу. Но есть другой способ - через специальные сервисы рассылки. Про один такой, mandrill.com, я немного расскажу.

    Коментарии Читать далее
  • Django проект: с нуля до работающего сервера

    В этом посте хочу описать свой опыт создания и запуска django проекта на VPS-хостинге.

    Разделим задачу на этапы:

    1. Создание django-проекта
    2. Настройка деплоя
    3. Настройка сервера (установка нужных библиотек)
    4. Деплой проекта
    Коментарии Читать далее
  • Настройки логов для django

    Рассмотрим дефолтные настройки логов в django и попробуем их сделать максимально удобными.

    Вот что есть в settings.py после команды django-admin.py startproject project_name (django 1.5):

    Коментарии Читать далее
  • Кеширование queryset.count в django

    Кеширование queryset.count в django

    Как-то обнаружил, что у меня идут несколько одинаковых запросов вида SELECT COUNT(*) .... Оказалось (да, для меня это было новостью :) ), что метод queryset.count() в джанго кешируется по особому. Но лучше начать рассказ издалека.

    Коментарии Читать далее
  • Парсинг url'а, содержащего unicode параметры, используя urlparse.parse_qs

    Задача: получить словарь параметров URL’a. Например, имеем адрес:

    http://example.com/?key=value&a=b
    

    и нужно получить такой словарь:

    {'key': ['value'], 'a': ['b']}
    

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

    In: http://example.com/?key=value&a=b&a=c
    Out: {'key': ['value'], 'a': ['b', 'c']}
    
    Коментарии Читать далее
  • Оптимизация админки django

    Django admin site optimisation

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

    В этом посте я рассмотрю некоторые способы уменьшения количества запросов из админки к БД при использовании __unicode__, содержащего поля связанного объекта (ForeignKey). Думаю, глядя на примеры станет понятнее.

    Коментарии Читать далее
  • Многоязычный сайт на django без редиректов

    Star

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

    Для этого добавляем в settings.py:

    Коментарии Читать далее
  • MobileESP: Скрипт определения мобильного устройства посетителя

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

    Коментарии Читать далее
  • Отладка django проекта с помощью встроенного python отладчика pdb

    Я использую sublime-text в качестве редактора python кода. В нем нет встроенного отладчика, поэтому для отладки django проектов я в основном делал так:

    print var_name
    

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

    Это можно сделать с помощью встроенного python отладчика pdb:

    import pdb; pdb.set_trace()
    
    Коментарии Читать далее