После девяти месяцев разработки вышла стабильная версия web-фреймворка Django 1.10, написанного на языке Python и предназначенного для разработки веб-приложений. Ветка Django 1.10 будет поддерживаться до декабря 2017 года. LTS-ветка Django 1.8 будет поддерживаться до апреля 2018 года.

Ключевые улучшения:

  • Официальная поддержки символов Unicode в именах пользователей (ранее в именах поддерживались только символы ASCII);
  • Реализация полнотекстового поиска для конфигураций с СУБД PostgreSQL;
  • Новый фреймворк Middleware для встраивания обработчиков на различные стадии обработки запросов и ответов. Обработчики выступают в роли легковесных плагинов, которые могут менять формируемый в Django вывод и поступающие входные данные.

Django logo

Очередной фикс уязвимостей в безопасности.

Исправлена функция reverse(). Можно было, при определенной комбинации аргументов, получить ссылку относительно протокола, а не домена, и перенаправить пользователя на сторонний сайт.

Изменена генерация уникального названия загружаемого файла. Раньше добавлялся инкрементированный индекс(_1, _2 и т.д.). Если файл с таким названием уже существует, инкрементировался индекс, пока не получалось уникальное названия файла. При загрузке большого количества небольших файлов с одинаковым названием, os.stat() вызывался все большее количество раз, что влияло на производительность сервера. Теперь добавляется случайная строка.

Исправлен RemoteUserMiddleware. При смене заголовка REMOTE_USER без "логаута", можно было получить доступ к сессии другого пользователя. Теперь будет выполнятся повторная авторизация пользователя.

Исправлена страница выбора связанных объектов в админке. Выбор связанного объекта для ForeignKey можно настроить как через список(<select>), так и в новом окне. Название поля связи передавалось через URL окна. Проверка прав доступа к модели выполнялась, но не проверялось является ли переданное поле связью между моделями. Таким образом, зная структуру модели, можно было получить доступ к любому полю модели.

Полное описание релизов доступно на официальном сайте.

Предпологается что у нас есть рабочее приложение работающее на Django, и используещее MySql в качестве базы данных.

Так же уже имеется свежесозданная база даных Postgres

Прежде всего нам понадобятся следующие модули:

$ pip install psycopg2
$ pip install py-mysql2pgsql

далее запускаем: 

$ py-mysql2pgsql

эта команда создаст файл mysql2pgsql.yml примерно следующего содержания:

mysql:
hostname: localhost
port: 3306
socket: /tmp/mysql.sock
username: foo
password: bar
database: your_database_name
compress: false
destination:

postgres:
hostname: localhost
port: 5432
username: foo
password: bar
database: your_database_name

этот файл мы приводим к нежному нам виду и дальше запускаем:

$ py-mysql2pgsql -v -f mysql2pgsql.yml

эта команда переведет все данные из MySql в Postgres

теперь самое главное внести необходимые изменения в settings.py 

DATABASES = {
"default": {
   "ENGINE": "django.db.backends.postgresql_psycopg2",
   "NAME": "your_database_name",
   "USER": "your_username",
   "PASSWORD": "your_password",
   "HOST": "localhost",
   "PORT": "5432",
}
}

ну и проверить все ли правильно у нас перенеслось

 

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

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

Вчера были выпущены два релиза: Django 1.4.9 и Django 1.5.5, которые предназначены для исправления ошибок. Некоторые из этих ошибок относятся к задачам безопасности, но нет причин для паники. В основном, эти релизы улучшают на PBKDF2 хэшер для лучшего противодействия отказу от обслуживания, обнаруженного в прошлом месяце, а также исправляют несколько других ошибок..

Полное описание релизов доступно для:

Django 1.4.9
Django 1.5.5