LINUX.ORG.RU

Новый релиз фреймворка Django 1.4

 , , ,


0

1

С опозданием на несколько недель вышел новый мажорный релиз фреймворка для разработки веб-приложений на языке Python − Django 1.4. Список изменений весьма обширен, наиболее интересные из них:

  • Продвинутая поддержка часовых поясов (timezone).
  • Поддержка браузерных фреймворков для тестирования (например, Selenium).
  • Шаблоны для создания новых проектов.
  • Улучшена поддержка WSGI.
  • Поддержка SELECT FOR UPDATE в ORM, которая позволяет заблокировать доступ на чтение и удаление к записям, соответствующим запросу.
  • Теперь можно хранить данные пользовательской сессии в cookie.
  • Добавлен метод Model.objects.bulk_create для эффективной вставки множества записей в БД.
  • Добавлен метод QuerySet.prefetch_related, схожий с известным методом select_related, но который более эффективно работает в некоторых сложных ситуациях (например, для отношений многое-ко-многим, или при использовании GenericForeignKey).
  • Улучшено хеширование паролей. Теперь используется алгоритм PBKDF2.
  • Страницы встроенной админки теперь имеют HTML5 Doctype.
  • Улучшения админки: улучшены фильтры, добавлена возможность множественной сортировки.
  • FormWizard переписан с использованием class-based views.
  • Добавлен метод reverse_lazy, позволяющий использовать обратный резолвинг URL (django.core.urlresolvers.reverse) до загрузки URLConf.
  • Улучшена поддержка интернационализации URL.
  • Улучшен вывод отладочной информации при ошибках в шаблонах.
  • Добавлена защита от Clickjacking (выключена по умолчанию для обратной совместимости).
  • Улучшена защита от CSRF.

Надо заметить, что в релизе 1.4 убрана поддержка Python 2.4, а в релизе 1.5 будет добавлена экспериментальная поддержка Python 3, о чем можно почитать здесь.

Список изменений, ломающих обратную совместимость

Список функций, не рекомендуемых для использования (deprecated)

>>> Полный список нововведений

★★★★★

Проверено: DoctorSinus ()
Последнее исправление: Silent (всего исправлений: 4)
Ответ на: комментарий от baverman

Рельсы не знаю, не юзал.

С Джангой работаю давно.

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

FishHook
()
Ответ на: комментарий от FishHook

Рельсы не знаю, не юзал.

...

С Джангой работаю давно.

...

Пилонс (тг2) юзал ?

Дело не в ограничености движка а для чего этот движок предзназначен.
Залез бы на сайт Джанго почитал бы для начала то...

Я например могу на си (сги) тоже написать новостной сайт и что ?
У си тоже ограничености нету ;)

mx__ ★★★★★
()
Ответ на: комментарий от FishHook

насчёт ограниченности Джанго в пределах новостных сайтов.

Это сродни git. Линус его делал для разработки ядра, а остальные разработчики уже как-то приспособили для своих нужд.

Но уши то никуда не спрячешь!

baverman ★★★
()
Ответ на: комментарий от baverman

То есть, с тормозящими рельсами ты согласен? Хм. Петонофанатик?

Тихо, сам с собой я веду беседу

MyTrooName ★★★★★
()
Ответ на: комментарий от baverman

Тогда надо поглядеть, что это за джанго такое, ибо git «притянули за уши» очень даже неплохо. Никогда веб-разработкой не интересовался, а тут протихоньку назревает необходимость использования хорошего фреймворка для этого дела.

ApostolPetr
()
Ответ на: комментарий от ApostolPetr

Никогда веб-разработкой не интересовался, а тут протихоньку назревает необходимость использования хорошего фреймворка для этого дела.

Если это простые проекты, то проще взять bottle.py. Это будет быстрее, чем разобраться с джангой.

deb
()
Ответ на: комментарий от deb

Приму к сведению. Как-то натыкался на него в интернете, но не придавал этому особого внимания.

ApostolPetr
()
Ответ на: комментарий от baverman

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

- бакэнды внушительного спектра СУБД, способные работать в режиме распределенного кластера

- многоуровневое кэширование данных

- событийная архитектура

Это все конечно признаки новостного сайта, да... Я почти поверил вам.

anonymous
()
Ответ на: комментарий от anonymous

- многоуровневое кэширование данных

Да, это новостной сайт.

- событийная архитектура

Скорее мешается.

- бакэнды внушительного спектра СУБД

В ORM остались волшебные, удобные для новостников фильтры группировки по датам. Не говоря уже о его убогости.

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

baverman ★★★
()
Ответ на: комментарий от baverman

дебильный загрузчик шаблонов

Поделись мыслями, что же в нем такого дебильного?

FishHook
()
Ответ на: комментарий от anonymous

- бакэнды внушительного спектра СУБД

О, да. Широк как никогда ранее: SQLite, MySQL4, MySQL5 и Oracle c Postgres... Всё. На странице django databases спектр исчерпался.

Прошелся по поддержке наиболее качественных СУБД:

Oracle:

Django supports Oracle Database Server versions 9i and higher. Oracle version 10g or later is required to use Django's regex and iregex query operators. You will also need at least version 4.3.1 of the cx_Oracle Python driver. Т.е. поддержка, грубо гря, частичная.

MSSQL

https://www.google.com/#q=django mssql

По ссылке видим: 1. pyfacepalm pyodbc 2. django-mssql (раздел issues радует глаз) И чуть ниже по поиску: «django-mssql project... trying to update identity column?»

В общем, внушительный спектр такой внушительный (по всяким db2 уже не и смотрел даже - хотя того же уровня движки).

malbolge ★★
()
Ответ на: комментарий от anonymous

- бакэнды внушительного спектра СУБД, способные работать в режиме распределенного кластера

SQLite? Кластер?! СУБД???

malbolge ★★
()
Ответ на: комментарий от baverman

так и осталась, обратная совместимость же

Практически весь код с 2005 г. был переписан. В каждой версии появляются новые deprecation warnings.

невменяемый процесс подгрузки конфига

Это да.

Само собой что некоторые компоненты не всех устраивают, существует хорошие расширения, которые легко подключить, например SQLAlchemy, Jinja2.
С деплоем чуть сложнее, но связка fabric+pip+virtualenv неплохо справляется.


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

anonymous
()
Ответ на: комментарий от anonymous

У джанги только одно преимущество перед остальными фреймворками — админка. Как бы всё. Если бы не она, то прекрасно обходился любым микрофреймворком + wtfroms + sqlalchemy.

На самом деле интересно послушать конструктивную критику

Что напрягает конкретно, наскидку:

* Нет способа указать сложные индексы через модель.
* Лоадер шаблонов может конструировать только django-шаблоны.
* Нельзя делать теги с переменным числом аргументов. (Пофикшено в 1.4)
* Не нашел хука, исполняющегося при старте инстанса.
* Примитивная перегрузка шаблонов. Зачастую, админские темплейты приходиться копировать полностью и править нужные места, хотя джинжа с этим справляется.

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

baverman ★★★
()
Ответ на: комментарий от mx__

Я например могу на си (сги) тоже написать новостной сайт и что ?
У си тоже ограничености нету ;)

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

anonymous
()
Ответ на: комментарий от anonymous

вы докопались до вырванной из контекста фразы

Дело не в ограничености движка а для чего этот движок предзназначен. ... Я например могу на си (сги) тоже написать новостной сайт и что ? У си тоже ограничености нету ;)

автор, вероятно^Wочевидно, хотел привести пример того, до какого бреда можно дойти, если допустить логику предыдущего оратора.

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

MyTrooName ★★★★★
()
Ответ на: комментарий от anonymous

Это все конечно признаки новостного сайта

Ты, хотя бы, на стандартный набор типов моделей глянь. SlugField, EmailField, ImageField, URLField ни о чем не говорят? Django возник в результате работы над сайтом газеты. В один прекрасный момент разработчики решили, что то, что они написали для себя, может оказаться полезным еще кому-то. На фоне Zope/Plone это выглядело крайне заманчиво - любая домохозяйка могла слепить сайтик, толком и не понимая, как все работает и тупо копируя куски кода из мануалов. То, что Django стали использовать для всего подряд, не сделало его больше, чем он есть и для чего создавался.

anonymous
()
Ответ на: комментарий от anonymous

История с Django очень напоминает историю с Nginx. Достаточно специализированный проект (некий комбайн, разработанный под крайне специфические нужды Рамблер) становится популярным благодаря легкости использования и паре блогов про то, как нихрена не понимая поднять свой Web-сервер с «рельсами в заду». Если взглянуть на его параметры, то Nginx достаточно слаб как HTTP-Proxy (в сравнении с тем же Squid), и как HTTP сервер для статики он - не самый лучший (если мне нужно очень быстро отдавать статику, я возму TUX). На FastCGI/SCGI его даже Apache «сделает». И при всей своей посредственности, он стал кумиром толп рельсоводов и прочего интернет-планктона.

anonymous
()
Ответ на: комментарий от baverman

Не видел ещё ни одного ORM, с которым было бы приятно работать...

микрофреймворком + wtfroms + sqlalchemy.

Попробуй расширение flask-admin, может не торт, но довольно активно развивается

anonymous
()
Ответ на: комментарий от zz

Фейсбук типичный планктон

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

anonymous
()
Ответ на: комментарий от anonymous

Охотно верю. Плюс минус тысяча серверов ху керз.

zz ★★★★
()
Ответ на: комментарий от anonymous

Если взглянуть на его параметры, то Nginx достаточно слаб как HTTP-Proxy (в сравнении с тем же Squid), и как HTTP сервер для статики он - не самый лучший (если мне нужно очень быстро отдавать статику, я возму TUX). На FastCGI/SCGI его даже Apache «сделает».

Факты?

Кроме того, может потребоваться всё, и сразу.

deb
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.