Посты с тэгом ru


Smoothing The Curve

Smoothing The Curve

Sean O'Connor February 11th 2010

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

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



Messages for the rest of us

Messages for the rest of us

Jeff Croft February 10th 2010

Эта статья описывает изменения механизма сообщений в Django. В Django 1.2 можно посылать сообщения не только зарегистрированным пользователям, но и анонимным. Полностью переработан API.

Статья уже переведена мои другом Дмитрием Медвинским:

http://habrahabr.ru/blogs/django/87473/

Дмитрий мой бывший коллега и просто замечательный человек, follow @justadeveloper!



Multiple database support

Multiple database support

Alex Gaynor February 9th 2010

Изначально Django предполагал работу только с одной базой данных (системное ограничение включающее такие вещи как группа настроек DATABASE_*). В течение всего этого времени явно ощущалась необходимость поддержки возможности работы с несколькими БД. В рамках работы над версией 1.2 в течение Google Summer of Code поддержка нескольких БД была включена в trunk. С этими новшествами связаны как целый ряд внутренних изменений, так и несколько удачных расширений для существующих интерфейсов работы с БД.

Интерфейс работы с несколькими БД

Наиболее заметное изменение в Django состоит в том, что, вмест



Welcome to Django Advent

Welcome to Django-Advent

Jacob Kaplan-Moss February 8th 2010

Релиз Django 1.2 невероятно меня воодушевил. Оглядываясь назад, я могу сказать, что было несколько моментов, которые оказались ключевыми как для самого проекта Django, так и для общества в целом. Слияние ветки «magic-removal» и последующий релиз 0.96 был первым таким моментом: мы выпустили улучшенный Django и наше сообщество начало развиваться огромными скачками. Релиз Django 1.0 стал следующим ключевым моментом. Метка 1.0 гордо символизировала наш профессионализм и зрелость проекта.

И я абсолютно уверен, что версия 1.2 станет очередной ключевой точкой проекта.

Новые особенности — поддержка множественных соединений с базами данных, валидация моделей, усовершенствованная защита от CSRF, улучшение административного и



Кластеризация списка (List clustering)

И снова здравствуйте :)

Давненько я не писал, и с того времени произошло много хороших вещей:

  • Вышла бета Django 1.2, в ней огромное количество позитивных изменений. Такое чувство, что мне не хватало каждого из них. Взять хотя бы smart if tag, object-level permissions, session messages и улучшения интернационализации (теперь дата форматируется согласно текущей локали по умолчанию).

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

    Следите за обновлениями.

  • На работе мы стали использовать



Покрытометр (Django coverage)

В рамках программы по улучшению качества кода начали писать на работе модульные тесты.

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

В этой уверенности кроется одна проблема, я не знаю какая часть кода покрыта тестами. Так как нам еще далеко до TDD, тесты проверяют лишь некоторые функции.

Если бы степень покрытия различных модулей системы была известна, мы бы могли ответить на два вопроса:



Тайна замыкания

Перед нами на работе встала задача, ограничить частоту публикации комментариев. Реализовать решили через декоратор для вьюшек.

Другими словами нужно создать декоратор, не допускающий обращение к конкретной view, конкретным пользователем в течении определенного времени.

Что такое декоратор?

Декоратор — обертка для функции. С помощью декоратора можно изменять поведение декорируемой функции, ее входные или выходные параметры.

Примеры декораторов из Django:

login_required
при обращении анонимного пользователя к декорированому view, перенаправляет его на страницу логина.
transaction.commit_on_success
выполняет все запросы из декорируемой функции к БД в одной транзакции и коммитит ее при успеш


Система развертывания (deploy system)

Как я и обещал в предыдущей серии, посвящаю этот пост нашей системе развертывания.

Система самописная, достаточно тесно связана с процессом разработки и реализована при помощи sh-скрипта.

Общая схема

На рисунке приведена немного сумбурная схема процесса развертывания.

Разработка ведется с использованием SVN установленным на локальном сервере, там же расположен и локальный сервер MySQL. MySQL используется всеми при разработке, структура создается через initdb. Начальные данные в обязательном порядке (