Статьи

Django 1.2 — защита нескольких БД и CSRF


Во второй половине дня в понедельник выпуск Django 1.2 имел фальстарт, но в веб-фреймворк на основе Python (с открытым исходным кодом) вносятся исправления, и Django 1.2.1 должен быть
выпущен сегодня днем. Проблема была в файле конфигурации, который создает документацию по Django — у него не был увеличен номер версии в пакете Django 1.2. Разработчики Django сказали, что подождут 24 часа, чтобы убедиться, что другие дефекты не обнаружены, и затем выпустят Django 1.2.1 с обновленным сборщиком документации.

Поддержка нескольких БД

В Django 1.2 вы можете использовать несколько баз данных в одном проекте Django. Появилась новая
документация о том, как использовать эту функцию. Запросы можно отправлять в конкретную базу данных с помощью метода using () для объектов QuerySet. Предоставление аргумента using при вызове save () сохранит отдельные объекты в определенной базе данных. GeoDjango также получил поддержку нескольких пространственных баз данных.  

CSRF Защита от взлома

Фреймворк теперь поставляется с промежуточным программным обеспечением Cross Site Request Forgery и тегом шаблона, чтобы легко включить защиту от CSRF-атак. По словам разработчиков Django, атака CSRF «происходит, когда вредоносный веб-сайт содержит ссылку, кнопку формы или некоторый JavaScript, предназначенный для выполнения какого-либо действия на вашем веб-сайте с использованием учетных данных зарегистрированного пользователя, который посещает Вредоносный сайт в их браузере. Также распространяется на связанный тип атаки «login CSRF», при котором атакующий сайт обманывает браузер пользователя при входе на сайт с чужими учетными данными ». Узнайте, как использовать эту функцию
здесь .

Модель самопроверки

Экземпляры модели в Django 1.2 теперь могут проверять свои собственные данные. Кроме того, поля модели и формы теперь могут принимать настраиваемые списки валидаторов, которые задают инкапсулированное, повторно используемое поведение валидации. Имейте в виду, что вызов метода save () экземпляра модели не будет выполнять проверку; вам все еще нужно выполнить проверку явно.  

Пользовательский фреймворк «Сообщения»

Django 1.2 имеет новую структуру сообщений, которая настраивается и является надежной. Он имеет встроенную поддержку для файлов cookie и сообщений на основе сеансов как для анонимных, так и для аутентифицированных пользователей. В результате API сообщений, который заменен структурой сообщений, устарело.  

Разрешения на уровне объекта

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

Мощный новый «умный», если теги

если теги в Django 1.2 имеют поддержку операторов сравнения, то вместо ввода:

{% ifnotequal a b %}
...
{% endifnotequal %}

Вы можете напечатать это:

{% if a != b %}
...
{% endif %}

==,! =, <,>, <=,> =,
в и
не в , новые операторы, поддерживаемые в Django 1.2. Они работают так же, как операторы Python.

Фильтры теперь также можно использовать в
выражении
if :

<div
{% if user.email|lower == message.recipient|lower %}
class="highlight"
{% endif %}
>{{ message }}</div>

Другие новые функции

  • Улучшения GeoDjango
  • Разрешения для анонимных пользователей
  • Слабые требования к именам пользователей
  • Конфигурируемые почтовые серверы
  • Новые теперь символы спецификатора формата тега шаблона: c и u
  • Обработка встроенных объектов, связанных с JavaScript, в админке
  • Каналы синдикации как представления
  • Настраиваемая подсветка синтаксиса
  • Улучшена локализация
  • Быстрый провал для тестов
  • BigIntegerField
  • Натуральные ключи в светильниках
  • Кэширование шаблонов

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

Django 1.2 требует поддержки Python 2.4 в качестве нового минимума, в то время как поддержка 2.3 была прекращена. Новая структура защиты CSRF больше не совместима со старой системой, но пользователи старой системы не будут затронуты, пока она не будет удалена в Django 1.4. Бэкэнд базы данных PostgreSQL устарел, поскольку библиотека psycopg1 не обновлялась с 2005 года, но есть и другие способы использования PostgreSQL.

Второй релиз с исправлением ошибок в ветке Django 1.1.x также был выпущен. Примечания к выпуску Django 1.1.2 доступны
здесь . Поддержка ветки 1.1.x закончится после выхода Django 1.3.

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