# pip install south
В INSTALLED_APPS необходимо добавить 'south'.
Если при выполнении операции:
python manage.py migrate app_name
появляется следующая ошибка:
DatabaseError: (1050, "Table 'table_name' already exists")
, то необходимо произвести фейковую миграцию:
python ./manage.py migrate app_name --fake
Как подготовить базовую рабочую станцию на Debian, я рассказывал в статье. Ниже я описываю подготовку рабочей станции к началу web-разработке.
Устанавливаю и настраиваю СУБД:
В начале устанавливаю сервер mysql:
# aptitude install mysql-server
В ходе установки будет необходимо ввести пароль root'a.
После установки сервера mysql необходимо отредактировать файл my.cnf, для того, чтобы не было проблем с кодировками:
# gedit /etc/mysql/my.cnf
В секцию [mysql] добавляю:
default-character-set=utf8
В секцию [mysqld] добавляю:
character_set_server = utf8 collation_server = utf8_general_ci
Необходимо перезагрузить компьютер:
# reboot
Подключаюсь к mysql под root'ом:
mysql -u root -p
Проверяю, что кодировка MySql правильная:
mysql> show variables like 'char%';
Должны получить следующий результат:
+--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.01 sec)
Ставим пакеты, необходимые для работы:
Система контроля версий Mercurial:
# aptitude install mercurial
Среда для разработки Eclipse:
# aptitude install eclipse
Установка основных необходимых пакетов завершена. Можно перезагрузиться, а затем установить различные «примочки» для Eclipse:
PyDev for Eclipse:
Help — Install New Software — Add — Location
: http://pydev.org/updates. Примочка позволит использовать Python в Eclipse.
Mercurial for Eclipse:
Help — Install New Software — Add — Location
: http://cbes.javaforge.com/update. Примочка позволит использовать систему контроля версий Mercurial в Eclipse. Внимание! Необходимо ставить не последнюю версию, а ту, которая будет совместима с текущей версией Mercurial.
Web Page Editor:
Help — Install New Software — Add — Location
: http://download.eclipse.org/releases/galileo/. Где galileo
— название версии Eclipse. Примочка позволит создавать и редактировать web-документы в Eclipse.
Различные настройки Eclipse. Почему они по умолчанию не установлены — совершенно не понятно.
Убираю раздражающие подчёркивания:
Window — Preferences — General — Editors — Text Editors — Spelling — Enable spell checking
— убираю галочку.
Показываю Project Explorer, по умолчанию он почему-то скрыт:
Windows — Show View — Other — General — Project Explorer
.
Необходимо поставить песочницу virtualenv, и уже в ней ставить Django и необходимые примочки.
Для полноценной работы virtualenv необходимо поставить пакеты:
# apt-get install python-setuptools python-dev build-essential
Виртуальное окружение ставлю именно через easy_install:
# easy_install -U virtualenv
Создаю папку с проектом (/home/user_name/workspace/project_name/
), а в ней — рабочее окружение:
$ virtualenv --distribute env
Активирую виртуальное окружение:
~/workspace/project_name/env/bin$ . activate
Ставлю ещё одну библиотеку:
# apt-get install libmysqlclient-dev
Внутри песочницы ставлю последнюю версию фреймворка Django:
$ pip install Django
Библиотека для работы с MySQL:
$ pip install MySQL-python
Приложение South, облегчающее работу с базой данных. Подробности использования.
$ pip install south
Приложение для регистрации пользователей:
$ pip install django-registration
Команда syncdb имеет серьёзный недостаток: с её помощью можно легко создать схему базы данных, но вот изменять существующие объекты в базе данных с её помощью не получится. К примеру: добавлять новые поля к таблице можно, а вот изменять существующие — нельзя.
Приложение Django South лишено подобного недостатка.
Производим настройку приложения и начинаем работу:
Устанавливаем Django South:
sudo easy_install South
Добавляем South в INSTALLED_APPS
Если приложение только что создано и команду syncdb ещё не применяли, то создаем начальную миграцию и применяем её к базе данных:
./manage.py syncdb python manage.py schemamigration app_name --initial python manage.py migrate app_name
Если до этого момента использовали syncdb, то необходимо сконвертировать схему, созданную syncdb, в схему под управлением Django South:
python manage.py convert_to_south app_name
После очередного изменения схемы, выполняем последовательно 2 команды:
python manage.py schemamigration app_name --auto
python manage.py migrate app_name