Примечания к выпуску 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 .

Backwards-несовместимые изменения

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 Admin django.newforms django.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 ©2020 All rights reserved