Django Cookiecutter fue creado por Pydanny y nos permite crear una aplicación Django con una muy buena estructura y mejores prácticas de una forma muy rápida.
El repositorio oficial está ubicado en: https://github.com/pydanny/cookiecutter-django
A pesar de que la documentación es clara, quiero mostrar todo el proceso para mayor facilidad de algunos que apenas están comenzando en Django.
Instalar cookiecutter
Estando en tu ambiente Python, puedes instalarlo usando pip:
pip install cookiecutter
Teniéndo esto, ahora necesitas ubicar la carpeta donde quieres crear tu proyecto. Una vez ubicado, ejecuta el siguiente comando:
cookiecutter https://github.com/pydanny/cookiecutter-django.git
Después de ello, la consola hará algunas preguntas:
You've downloaded /Users/andres/.cookiecutters/cookiecutter-django before. Is it okay to delete and re-download it? [yes]: yes project_name [My Awesome Project]: Example App project_slug [example_app]: django_example description [Behold My Awesome Project!]: This is my description author_name [Daniel Roy Greenfeld]: Andres domain_name [example.com]: email [[email protected]]: version [0.1.0]: Select open_source_license: 1 - MIT 2 - BSD 3 - GPLv3 4 - Apache Software License 2.0 5 - Not open source Choose from 1, 2, 3, 4, 5 (1, 2, 3, 4, 5) [1]: 5 timezone [UTC]: windows [n]: use_pycharm [n]: use_docker [n]: Select postgresql_version: 1 - 10.5 2 - 10.4 3 - 10.3 4 - 10.2 5 - 10.1 6 - 9.6 7 - 9.5 8 - 9.4 9 - 9.3 Choose from 1, 2, 3, 4, 5, 6, 7, 8, 9 (1, 2, 3, 4, 5, 6, 7, 8, 9) [1]: 1 Select js_task_runner: 1 - None 2 - Gulp Choose from 1, 2 (1, 2) [1]: 1 custom_bootstrap_compilation [n]: y use_compressor [n]: use_celery [n]: use_mailhog [n]: use_sentry [n]: use_whitenoise [n]: use_heroku [n]: use_travisci [n]: keep_local_envs_in_vcs [y]: n debug [n]: [SUCCESS]: Project initialized, keep up the good work!
Ahora ya tienes una carpeta con tu nuevo proyecto Django!
Pero espera, no hemos terminado!
Sí intentamos correr las migraciones, vamos a obtener un error acerca de una base de datos no existente. Entonces debemos configurar primero la base de datos.
Configurar base de datos Postgres
Yes, It comes with Postgres by default, and you can change it, but definitively It’s always better to use Postgres.
Preparemos la base de datos:
psql postgres
Voy a crear una base de datos ejemplo con un usuario example_user y una contraseña password:
-- Create the database project CREATE DATABASE example; -- Create user for database CREATE ROLE example_user WITH LOGIN ENCRYPTED PASSWORD 'password' CREATEDB; -- Grant privileges to the user to access database GRANT ALL PRIVILEGES ON DATABASE example TO example_user;
En este punto, deberíamos tener una base de datos vacía y funcionando con el usuario especificado.
Ahora lee tenemos que decir a Django la información de la base de datos. Para hacerlo, necesitas definir una variable de entorno DATABASE_URL, utilizando la convención de Django:
Sí te encuentras en un ambiente Unix, este comando hace el trabajo:
export DATABASE_URL=postgres://example_user:[email protected]:5432/example
Ve a la carpeta creada e instala los requerimientos de Python:
cd django_example pip install -r requirements/local.txt
Después de esto, deberías poder ejecutar las migraciones de Django sin ningún problema:
python manage.py migrate
Deberías obtener algo como lo siguiente:
python manage.py migrate Operations to perform: Apply all migrations: account, admin, auth, contenttypes, sessions, sites, socialaccount, users Running migrations: Applying contenttypes.0001_initial... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0001_initial... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying users.0001_initial... OK Applying account.0001_initial... OK Applying account.0002_email_max_length... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying auth.0009_alter_user_last_name_max_length... OK Applying sessions.0001_initial... OK Applying sites.0001_initial... OK Applying sites.0002_alter_domain_unique... OK Applying sites.0003_set_site_domain_and_name... OK Applying socialaccount.0001_initial... OK Applying socialaccount.0002_token_max_lengths... OK Applying socialaccount.0003_extra_data_default_dict... OK
Sí todo salió bien, es momento de ejecutar el servidor!
python manage.py runserver
Y una bonita página de inicio podrá ser visualizada!
Disfruta!