Примечания к выпуску Django 1.0

Добро пожаловать в Django 1.0!

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

Django 1.0 представляет собой более трех лет разработки сообщества как проект с открытым исходным кодом. Django получил вклад от сотен разработчиков, переведен на пятьдесят языков и сегодня используется разработчиками на всех континентах и ​​в самых разных сферах деятельности.

Интересное историческое примечание: когда Django был впервые выпущен в июле 2005 года, первоначальная выпущенная версия Django происходила из внутреннего репозитория с номером ревизии 8825. Django 1.0 представляет собой ревизию 8961 нашего публичного репозитория. Кажется уместным, что наша версия 1.0 выходит в тот момент, когда вклад сообщества превосходит вклад, сделанный частным образом.

Стабильность и прямая совместимость

Выпуск Django 1.0 обещает стабильность и совместимость API. Вкратце, это означает, что код, который вы разрабатываете для Django 1.0, будет продолжать работать с 1.1 без изменений, и вам нужно будет вносить лишь незначительные изменения для любого выпуска 1.X.

См. Подробную информацию в руководстве по стабильности API .

Обратно несовместимые изменения

Django 1.0 имеет ряд несовместимых с предыдущими версиями изменений по сравнению с Django 0.96. Если у вас есть приложения, написанные для Django 0.96, которые вам нужно перенести, см. Наше подробное руководство по портированию:

Полный список обратно несовместимых изменений можно найти по адресу https://code.djangoproject.com/wiki/BackwardsIncompatibleChanges .

Что нового в Django 1.0

Много !

Начиная с Django 0.96, мы сделали более 4000 коммитов кода, исправили более 2000 ошибок и отредактировали, добавили или удалили около 350 000 строк кода. Мы также добавили 40 000 строк новой документации и значительно улучшили то, что уже было.

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

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

Мы не можем задокументировать все, что нового в 1.0, но документация будет вашим исчерпывающим руководством. Везде вы видите что-то вроде:

Новое в Django 1.0:

Эта функция появилась в Django 1.0.

Вы будете знать, что смотрите на что-то новое или измененное.

Другие важные особенности Django 1.0:

Рефакторинг админки

Полностью переработан административный интерфейс Django ( django.contrib.admin); Определения администратора теперь полностью отделены от определений моделей (больше никаких деклараций в моделях!), переписаны для использования новой библиотеки обработки форм Django (представленной в версии 0.96 как и теперь доступны просто ) и переработаны с учетом расширяемости и настройки. Полная документация для приложения администратора доступна онлайн в официальной документации Django:class Admindjango.newformsdjango.forms

Смотрите ссылку администратора для получения подробной информации

Улучшена обработка Unicode

Внутреннее устройство Django было переработано для использования Unicode; это резко упрощает задачу работы с не-западноевропейским контентом и данными в Django. Кроме того, были предоставлены служебные функции для облегчения взаимодействия со сторонними библиотеками и системами, которые могут или не могут корректно обрабатывать Unicode. Подробности доступны в документации по обработке Unicode в Django.

См. Данные Unicode .

Улучшенная ORM

Объектно-реляционный преобразователь Django - компонент, который обеспечивает сопоставление между классами модели Django и вашей базой данных и который является посредником ваших запросов к базе данных - был значительно улучшен за счет масштабного рефакторинга. Для большинства пользователей Django это обратно совместимо; общедоступный API для запросов к базе данных претерпел несколько незначительных изменений, но большинство обновлений произошло во внутреннем устройстве ORM. Руководство по изменениям, включая обратно несовместимые модификации и упоминания о новых функциях, появившихся в результате этого рефакторинга, доступно в вики Django .

Автоматическое экранирование переменных шаблона

Чтобы обеспечить улучшенную защиту от уязвимостей межсайтового скриптинга (XSS), система шаблонов Django теперь автоматически экранирует вывод переменных. Это поведение настраивается и позволяет помечать как переменные, так и более крупные конструкции шаблона как безопасные (не требующие экранирования) или небезопасные (требующие экранирования). Полное руководство по этой функции находится в документации к autoescapeтегу.

django.contrib.gis(GeoDjango)

Этот проект, над которым работал год, добавляет поддержку ГИС ( географических информационных систем ) мирового класса в Django в виде contrib приложения. Его документация в настоящее время поддерживается извне и в ближайшее время будет объединена с основной документацией Django. Огромное спасибо Джастину Бронну, Джереми Данку, Бретту Хёрнеру и Трэвису Пинни за их усилия по созданию и завершению этой функции.

Подробнее см. Http://geodjango.org/ .

Подключаемое хранилище файлов

Django встроен FileFieldи ImageFieldтеперь может использовать преимущества подключаемых бэкэндов файлового хранилища, что позволяет настраивать, где и как загруженные файлы хранятся Django. Подробности см. В документации к файлам ; Большое спасибо Марти Алчину за его усердную работу, чтобы завершить эту работу.

Совместимость с Jython

Благодаря большой работе Лео Сото во время проекта Google Summer of Code, кодовая база Django была переработана для устранения несовместимости с Jython , реализацией Python, написанной на Java, которая запускает код Python на виртуальной машине Java. Django теперь совместим с предстоящим выпуском Jython 2.5.

Общие отношения в формах и администрировании

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

INSERT/ UPDATEразличие

Хотя поведение Django по умолчанию, согласно которому save()метод модели автоматически определяет, следует ли выполнять операцию INSERTили операцию UPDATEна уровне SQL, подходит для большинства случаев, бывают случайные ситуации, когда принудительное использование того или другого полезно. В результате модели теперь могут поддерживать дополнительный параметр, для save()которого можно принудительно выполнить определенную операцию.

Подробности см. В разделе « Принудительное выполнение INSERT или UPDATE» .

Сплит CacheMiddleware

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

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

Реорганизован django.contrib.comments

В рамках проекта Google Summer of Code Теджасви Путрая провел серьезное переписывание и рефакторинг встроенной системы комментариев Django, значительно увеличив ее гибкость и настраиваемость.

Удаление устаревших функций

Ряд функций и методов, которые ранее были помечены как устаревшие и которые планировалось удалить до выпуска 1.0, больше не присутствуют в Django. Они включают в себя импорт в виде библиотеки из django.newforms( в настоящее время находится просто в django.forms), то form_for_modelи form_for_instanceвспомогательные функции (которые были заменены ModelForm) , а также ряд устаревших функций , которые были заменены на диспетчеру, файл-загрузки и хранения файлов рефакторинга , введенных в Альфа-релизы Django 1.0.

Известные проблемы

Мы сделали все возможное, чтобы сделать Django 1.0 максимально надежным, но, к сожалению, в этом выпуске есть несколько проблем, о которых мы знаем.

Наследование многотабличной модели с to_field

Если вы используете множественное наследование таблицы модели , знать об этом предостережении: ребенок модели с использованием пользовательских parent_linkи to_fieldприведут к возникновению ошибок целостности базы данных. Набор моделей, подобных следующему, недействителен :

class Parent(models.Model):
    name = models.CharField(max_length=10)
    other_value = models.IntegerField(unique=True)

class Child(Parent):
    father = models.OneToOneField(Parent, primary_key=True, to_field="other_value", parent_link=True)
    value = models.IntegerField()

Эта ошибка будет исправлена ​​в следующем выпуске Django.

Предостережения при поддержке определенных баз данных

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

Copyright ©2021 All rights reserved