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!

Default starter template with Django Cookiecutter

Disfruta!


Comments