Посты с тэгом django days


Новинки Django 1.4, day 8: Timezones

Посвящается часовым поясам без DST.

Это предпоследний пост в серии Django Days. В этот раз будет затронуто одно из самых масштабных изменений в фреймворке: работу с часовыми поясами. Документация по этой теме достаточно подробная, мы попробуем рассказать это более интересно и по возможности сжато.

Что это и зачем
В Django до версии 1.4 все даты хранились и отображались для одного часового пояса, того, который указанны в настройках settings.TIME_ZONE. Теперь же появилась возможность хранить все даты в формате 


Новинки Django 1.4, day 0

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

Changelog Django 1.4

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

Примерный порядок постов


  1. ORM


Новинки Django 1.4, day 7: Templates

Седьмой пост в серии «Django Days», настал черёд рассказать про новые теги и другие вкусности шаблонов.

Key-value аргументы для пользовательских тегов
Теперь можно использовать key-value аргументы для тегов наряду с обычными позиционными аргументами, а именно:
{% my_tag 123 "abcd" book.title warning=message|lower profile=user.profile %}
Реализуется это всё через привычные args и kwargs:
@register.simple_tag
def my_tag(a, b, *args, **kwargs):
    warning = kwargs['warning']
    profile = kwargs['profile']
    ...
    return ...
assignment-теги
Некоторые теги в отличие от simple_tag, не обязаны выводить что-то в шаблон, им достаточно лишь модифицировать контекст рендеринга шаблона (например, встроенный {% with %}).  Вот как можно использовать подобный тег для вывода времени:


Новинки Django 1.4, day 6: Шаблон проекта

Продолжим начатую в прошлый раз тему про новую структуру приложений. Напомню, что теперь по-умолчанию manage.py находится на уровень выше, чем модуль проекта. Чтобы проиллюстрировать это, запустим ./manage.py startproject:
# создать проект blog в текущей директории
django-admin.py startproject blog
# blog
# blog/blog
# blog/blog/__init__.py
# blog/blog/settings.py
# blog/blog/urls.py
# blog/blog/wsgi.py
# blog/manage.py
# в 1.4 можно создать проект blog не в текущей, а любой другой директории
# Мы выбрали /home/futurecolors/stuff/
django-admin.py startproject blog /home/futurecolors/stuff/
# /home/futurecolors/stuff/
# /home/futurecolors/stuff/blog
# /home/futurecolors/stuff/blog/__init__.py
# ...
# /home/futurecolors/stuff/manage.py
За объяснением, для чего потребовалось выносить manage.py, обращайтесь к предыдущему посту. А


Новинки Django 1.4, day 5: Структура проекта


На сегодня у нас изменения в структуре django-проектов. Они достаточно важные, поэтому рассмотрим их по-подробней.

Изменения в manage.py и структуре проектов
Docs
Discussion on django-developers

Зачем

Рассмотрим детально проблему, которую решают разработчики django в новом релизе, изменяя структуру проекта. Вот как выглядел базовый каркас, который генерила команда startproject до версии 1.4:
mysite/
    __init__.py
    manage.py
    settings.py
    urls.py
    myapp/
        __init__.py
        models.py
Недостатком данной структуры является наличие в пакете mysite исполняемого консольного скрипта manage.py, который по сути не связ


Новинки Django 1.4, day 3: Тестирование

Продолжение серии постов к выходу новой Django 1.4 (начало, про ORM, про безопасность). Сегодня мы немного осветим фичи в тестовом фреймворке.

Поддержка браузерного тестирования
Docs
Commit 17241

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


Новинки Django 1.4, day 4: Админка

Сегодня настала очеред поведать про фичи версии 1.4, относящиеся к административному интерфейсу Django. Предыдущие части 0, 1, 2, 3.

HTML5 Doctype
Разработчики сменили доктайп с HTML 4.01 Transitional и XHTML 1.0 Strict на более современный так называемый “HTML5 doctype” с сокращённой записью <!DOCTYPE html>, который также заставляет современные браузеры рендерить страницы в “standards mode”, так что ничего особо нового, хотя шуму много и в чейнджлоге где-то вверху списка новшество.

Пользовательские фильтры в админке
 Начиная


Новинки Django 1.4, day 2: Безопасность и формы

Продолжаем «неделю Джанго», начало в предыдущих заметках ORM-плюшки и Day 0. До релиза 1.4 пишем про новинки фреймворка. Сегодня в фокусе безопасность.

Обновлен механизм хэширования паролей
Теперь вместо SHA1, считающегося недостаточно надёжным, по-умолчанию используется более устойчивый к брутфорсу PBKDF2. Если выбор разработчиков Django вам не по нраву, можно настроить свой предпочитаемый тип хэширования в переменной PASSWORD_HASHERS, выбрав из уже имеющегося списка, либо написав свой собственный. Надо заметить, что пароли хранятся в том же формате, что и раньше, так что пользователям сбрасывать их не придётся.


Новинки Django 1.4, day 1: ORM плюшки


Продолжение серии постов «Новинки Django 1.4».

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

В Django 1.4 появилось сразу 3 новых метода:
  • bulk_create()
  • select_for_update()
  • prefetch_related()

Model.objects.bulk_create

Docs