2013-08-16 14:55:28 +04:00
{{cookiecutter.project_name}}
==============================
{{cookiecutter.description}}
2013-08-29 10:57:20 +04:00
LICENSE: BSD
2013-08-19 22:32:07 +04:00
2013-10-25 18:59:48 +04:00
Settings
------------
2014-03-22 19:16:11 +04:00
{{cookiecutter.project_name}} relies extensively on environment settings which **will not work with Apache/mod_wsgi setups** . It has been deployed successfully with both Gunicorn/Nginx and even uWSGI/Nginx.
2013-10-25 18:59:48 +04:00
2014-03-22 19:16:11 +04:00
For configuration purposes, the following table maps the '{{cookiecutter.project_name}}' environment variables to their Django setting:
2013-10-25 18:59:48 +04:00
2013-11-26 01:42:40 +04:00
======================================= =========================== ============================================== ===========================================
Environment Variable Django Setting Development Default Production Default
======================================= =========================== ============================================== ===========================================
DJANGO_AWS_ACCESS_KEY_ID AWS_ACCESS_KEY_ID n/a raises error
DJANGO_AWS_SECRET_ACCESS_KEY AWS_SECRET_ACCESS_KEY n/a raises error
DJANGO_AWS_STORAGE_BUCKET_NAME AWS_STORAGE_BUCKET_NAME n/a raises error
DJANGO_CACHES CACHES locmem memcached
DJANGO_DATABASES DATABASES See code See code
DJANGO_DEBUG DEBUG True False
DJANGO_EMAIL_BACKEND EMAIL_BACKEND django.core.mail.backends.console.EmailBackend django.core.mail.backends.smtp.EmailBackend
DJANGO_SECRET_KEY SECRET_KEY CHANGEME!!! raises error
DJANGO_SECURE_BROWSER_XSS_FILTER SECURE_BROWSER_XSS_FILTER n/a True
DJANGO_SECURE_SSL_REDIRECT SECURE_SSL_REDIRECT n/a True
DJANGO_SECURE_CONTENT_TYPE_NOSNIFF SECURE_CONTENT_TYPE_NOSNIFF n/a True
DJANGO_SECURE_FRAME_DENY SECURE_FRAME_DENY n/a True
DJANGO_SECURE_HSTS_INCLUDE_SUBDOMAINS HSTS_INCLUDE_SUBDOMAINS n/a True
DJANGO_SESSION_COOKIE_HTTPONLY SESSION_COOKIE_HTTPONLY n/a True
DJANGO_SESSION_COOKIE_SECURE SESSION_COOKIE_SECURE n/a False
======================================= =========================== ============================================== ===========================================
2013-10-25 18:59:48 +04:00
* TODO: Add vendor-added settings in another table
2014-03-22 19:16:11 +04:00
Getting up and running
----------------------
2013-11-12 19:58:28 +04:00
2014-03-22 19:16:11 +04:00
The steps below will get you up and running with a local development environment. We assume you have the following installed:
2013-11-12 19:58:28 +04:00
2014-03-22 19:16:11 +04:00
* pip
* virtualenv
* PostgreSQL
2013-11-12 19:58:28 +04:00
2014-03-22 19:16:11 +04:00
First make sure to create and activate a virtualenv_, then open a terminal at the project root and install the requirements for local development::
2013-11-12 19:58:28 +04:00
2014-03-22 19:16:11 +04:00
$ pip install -r requirements/local.txt
2014-01-10 01:03:28 +04:00
2014-03-22 19:16:11 +04:00
.. _virtualenv: http://docs.python-guide.org/en/latest/dev/virtualenvs/
2014-01-10 01:03:28 +04:00
2014-03-22 19:16:11 +04:00
You can now run the usual Django `` runserver `` command (replace `` yourapp `` with the name of the directory containing the Django project)::
2014-01-10 01:03:28 +04:00
2014-03-22 19:16:11 +04:00
$ python yourapp/manage.py runserver
2014-01-10 01:03:28 +04:00
2014-03-22 19:16:11 +04:00
The base app will run but you'll need to carry out a few steps to make the sign-up and login forms work. These are currently detailed in `issue #39`_ .
.. _issue #39: https://github.com/pydanny/cookiecutter-django/issues/39
**Live reloading and Sass CSS compilation**
If you'd like to take advantage of live reloading and Sass / Compass CSS compilation you can do so with the included Grunt task.
Make sure that nodejs_ is installed. Then in the project root run::
2014-05-02 20:04:00 +04:00
$ npm install grunt
2014-03-22 19:16:11 +04:00
.. _nodejs: http://nodejs.org/download/
Now you just need::
$ grunt serve
The base app will now run as it would with the usual `` manage.py runserver `` but with live reloading and Sass compilation enabled.
To get live reloading to work you'll probably need to install an `appropriate browser extension`_
.. _appropriate browser extension: http://feedback.livereload.com/knowledgebase/articles/86242-how-do-i-install-and-use-the-browser-extensions-
It's time to write the code!!!
2014-01-10 01:03:28 +04:00
2013-10-25 18:59:48 +04:00
2013-08-19 22:32:07 +04:00
Deployment
------------
2013-10-03 12:08:03 +04:00
Run these commands to deploy the project to Heroku:
.. code-block :: bash
2014-01-10 01:03:28 +04:00
heroku create --buildpack https://github.com/heroku/heroku-buildpack-python
2013-10-03 12:08:03 +04:00
heroku addons:add heroku-postgresql:dev
2014-02-26 18:35:26 +04:00
heroku addons:add pgbackups:auto-month
2013-10-03 12:08:03 +04:00
heroku addons:add sendgrid:starter
heroku addons:add memcachier:dev
2014-05-02 23:55:14 +04:00
heroku pg:promote DATABASE_URL
2014-01-08 15:03:52 +04:00
heroku config:set DJANGO_CONFIGURATION=Production
2014-05-02 23:49:26 +04:00
heroku config:set DJANGO_SECRET_KEY=RANDOM_SECRET_KEY_HERE
heroku config:set DJANGO_AWS_ACCESS_KEY_ID=YOUR_AWS_ID_HERE
heroku config:set DJANGO_AWS_SECRET_ACCESS_KEY=YOUR_AWS_SECRET_ACCESS_KEY_HERE
heroku config:set DJANGO_AWS_STORAGE_BUCKET_NAME=YOUR_AWS_S3_BUCKET_NAME_HERE
2013-10-03 12:08:03 +04:00
git push heroku master
2014-07-18 04:41:00 +04:00
heroku run python {{cookiecutter.repo_name}}/manage.py syncdb --noinput
heroku run python {{cookiecutter.repo_name}}/manage.py migrate --noinput
2014-03-22 19:16:11 +04:00
heroku run python {{cookiecutter.repo_name}}/manage.py createsuperuser
heroku open
2014-05-02 23:49:26 +04:00