Лучший способ создания проекта на Django

категория: Django
Мне тут подкинули интересную статейку на тему создания проекта на Django 1.4 лучшим способом, и я решил перевести ее и записать основные позиции. К концу этой статьи вы будете иметь: 1. Полнофункциональный проект на Django 1.4 2. Все ресурсы под системой контроля Git 3. Установленное независимое окружение вашего проекта (с использованием virtualenv) 4. Автоматизированное развертывание и тестирование (с помощью Fabric) 5. Автоматическая миграция базы данных (с использованием South) Подготовка к установке Я предполагаю, что Python уже установлен и, более того, уверен в этом)). Итак, какой первый шаг? Установка Django? Не стоит спешить. Если вы используете Python разных версий или Django в других проектах - то нужно новый проект изолировать в своей среде для устранения пересечения пакетов разных версий. В этом нам поможет virtualenv и его прекрасное расширение virtualenvwrapper. Используем pip и установим virtualenv и virtualenvwrapper установкой последнего:
pip install virtualenvwrapper
После установки добавьте следующие строки в файл авто-запуска вашей оболочки (.bashrc, .zshrc, .profile):
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/directory-you-do-development-in
source /usr/local/bin/virtualenvwrapper.sh
Перезагружаем файл авто-запуска и двигаемся дальше:
source ~/.bashrc
Создание нового окружения
mkvirtualenv django_project
Чтобы выйти из виртуального окружения нужно набрать deactivate, а чтобы опять продолжить работу - workon django_project. Установка Django Находясь внутри окружения django_project, вводим:
pip install django
Тем самым мы установили последнюю версию Django. Создание проекта
django-admin.py startproject django_project
Теперь у нас есть директория django_project, в которой находиться manage.py и внутри еще одна директория django_project, в которой находятся settings.py, urls.py и wsgi.py Настройка репозиториев
git init
Создали git репозиторий в текущем каталоге. Теперь добавим все файлы под контроль git:
git add .
Теперь зафиксируем все изменения в нашем новом репозитории:
git commit -m 'Initial commit of django_project'
Для игнорирования ненужных фалов нужно создать .gitignore и вписать к примеру:
*.pyc
.*swp
*.db
static/images/
Использование South для миграции базы данных
pip install south
После установки добавляем 'south' в INSTALLED_APPS в the settings.py и синхронизируем базу:
python manage.py syncdb
Полезно еще создать документ со списком используемых пакетов и их версий:
pip freeze > requirements.txt
Создание нашего приложения Создаем наше первое приложение с помощью команды:
python manage.py startapp myapp
Добавляем myapp в INSTALLED_APPS и первым делом, что мы сделаем перед добавлением моделей - инициируем первую миграцию South:
python manage.py schemamigration myapp --initial
далее:
python manage.py migrate myapp
Если мы делаем дальше изменения в базе данных, то используем уже автоматическую миграцию:
python manage.py schemamigration myapp --auto
Площадка для разработки Одна из вещей к которой вы должны привыкнуть, это к разработке отдельно от файлов вашего проекта. С Git - это проще простого. Создайте новый каталог отдельно от вашего проекта и клонируете все файлы:
git clone /path/to/my/project/
Тем самым создастся точная копия всего репозитория. Все изменения, ветки и история будет там доступна. С этого момента вы должны работать из вашего каталога для разработки. Создаем ветку:
git checkout -b branchname
Использование Fabric для развертывания Итак, у нас есть задатки приложения Django. Fabric может быть использован для различных целей, но он действительно лучший для развертывания.
pip install fabric
Создаем файл fabfile.py в корневом каталоге проекта, со следующим содержимым:
from fabric.api import local
def prepare_deployment(branch_name):
    local('python manage.py test django_project')
    local('git add -p && git commit')
Он запустит тесты и зафиксирует изменения, но в том случае если тесты прошли. Давайте добавим немного больше:
from fabric.api import lcd, local
def deploy():
    with lcd('/path/to/my/prod/area/'):
        local('git pull /my/path/to/dev/area/')
        local('python manage.py migrate myapp')
        local('python manage.py test myapp')
        local('/my/command/to/restart/webserver')
Подробнее о Fabric читайте в офф документации. Наслаждайтесь вашим полноценным Django приложением. Ссылка на оригинал статьи: http://www.jeffknupp.com/blog/2012/10/24/starting-a-django-14-project-the-right-way/


blog comments powered by Disqus