First, warm up system.
$ easy_install pip
$ pip install virtualenv
$ pip install django
$ gem install heroku
$ brew install postgresqlStart a project.
$ django-admin.py startproject [myproject]Setup virtualenv and start it up. put in home directory, because I use VirtualBox and there are symlink issues if I put it on the share drive with the rest of the code
$ virtualenv --no-site-packages --distribute ~/ve/[ve-name]
$ touch virtenv_is_[ve-name]
$ source ~/ve/[ve-name]/bin/activateInstall some things into your virtualenv.
$ pip install Django psycopg2 south dj-database-urlNow load the exact version into a requirements.txt file.
$ pip freeze > requirements.txt(psycopg2 is a PostgreSQL adapter for Python. mysql-python is a MySQL adapter for Python)
Put south in your INSTALLED_APPS in settings.py.
INSTALLED_APPS = (
'south',
...Make .manage.py executable (so you don't have to type python manage.py ... all the time).
$ chmod +x manage.pyDon't forget to add ve to your .gitignore file.
Create a database for local use.
sudo -u postgres createdb [whatever]Add the following to settings.py:
import dj_database_url
DATABASES = {'default': dj_database_url.config(default='postgres://localhost/[whatever]')}
#postgres://username:password@host:port/database_nameAdd the following to local_settings.py:
import dj_database_url
DATABASES = {'default': dj_database_url.config(default='postgres://username:password@localhost/[whatever]')}Now go make something awesome.
$ git init
Initialized empty Git repository in /Users/kreitz/hellodjango/.git/
$ git add .
$ git commit -m "my django app"$ heroku create
$ git push heroku master
$ heroku run ./manage.py syncdb
$ heroku openUpdate your database with South and push the changes to Heroku
- Make changes to your models
$ ./manage.py schemamigration [appname] --auto$ ./manage.py migrate [appname]- [commit & push changes to heroku]
$ heroku run ./manage.py migrate [appname]
Whenever you work on your project, you'll want to activate your virtualenv:
$ source ve/bin/activateThen load any new requirements:
$ pip install -r requirements.txtSync and/or migrate your database:
$ ./manage.py syncdb
$ ./manage.py migrate [appname]Finally, fire up your server:
$ ./manage.py runserver 0.0.0.0:8000