| Author: Eduardo Enriquez

Django rest framework: tutorial - Parte I

django web framework django rest framework

Bueno vamos a ir de a poco intentando ver cómo usar django rest framework (http://www.django-rest-framework.org/). Ya lo había utilizado antes, pero luego de un tiempo sin usar tuve que volver a emparme las manos y aproveche para recopilar lo aprendido en este post (que espero que sea el inicio de un tutorial más grande).

0. Creación de virtualenv

Primero creamos una carpeta para el proyecto, en este caso le puse website, pero podria llamarse como a vos te guste. Luego entramos a la carpeta y creamos el virtualenv adentro.

mkdir website
cd website

python3 -m venv myvenv

Esto va a crear una carpeta que se llama myvenv y adentro se van a instalar todas las dependencias python de mi proyecto. Para instalar dependencias dentro de un virtualenv, hay que activar el virtualenv y correr pip install sin sudo. Para activarlo podemos hacer:

source myvenv/bin/activate

Pero bueno exite una libreria que nos abstrae un poco de este laburo y que se usa muy a menudo, se llama virtualenvwrapper (virtualenvwrapper.readthedocs.io). Para que la lib funcione se tiene que agregar un comando en tu bashrc o si usas zsh + ohmyzsh hay un pluggin mágico que lo resuelve. Basicamente se crea una carpeta .virtualenvs en tu home y ahi adentro se crean todos tus virtualenvs. Además tene un par de comandos: mkvirtualenv, rmvirtualenv y workon. Este último es para activar o cambiar el virtualenv en el cual queremos trabajar.

mkdir website
cd website
mkvirtualenv website

 

1. Instalación:

El primer paso es instalar todas nuestras dependencias (dentro del virtualenv). Vamos a iniciar un proyecto en django desde cero así que vamos a indicar instalar django y django-rest-framework (y dos librerias más opcionales)

pip install django djangorestframework
pip install markdown       # Markdown support for the browsable API.
pip install django-filter  # Filtering support

 

2.  Creación de un proyecto django:

Para empezar un proyecto en django se necesita crear un proyecto y crear apps. Quizás esto es engorroso porque antes de arrancar tenemos que preocuparnos por crear toda la jerarquia que django nos propone, pero bueno no son muchos pasos y tiene la ventaja de que permite crear un proyecto organizado y con apps independientes y portables hacia otros proyectos.

Asi que lo primero es crear el proyecto:

django-admin startproject website

Vale la aclaración de nuevo que uso website pero podría llamarse como a nosotros más nos guste.

Esto va a generar una estructura de carpetas similar a la siguiente:

website
├───manage.py
└───website
        settings.py
        urls.py
        wsgi.py
        __init__.py

Aquí observamos una carpeta base que se llama website y adentro un manage.py. Dentro de esta carpeta base tenémos nuestras carpeta de proyecto django (que también le pusimos website). Dentro de ella tenemos un archivo de configuración, un archivo que se va a encargar de manejar las distintas urls que nuestro sitio va a manejar y un archivo wsgi para la configuración en producción del proyecto.

El archivo de configuración (settings.py) es muy importante porque es el encargado de manejar muchas cosas de nuestro proyecto: desde la conexión con la base de datos hasta con que apps va a tener nuestro proyecto y configuración de pluggins.

Les recomiendo que se peguen una vuelta por el tutorial oficial de django: https://docs.djangoproject.com/es/1.11/intro/tutorial02/ por la documentación oficial del archivo https://docs.djangoproject.com/en/1.11/ref/settings/ o por el tutorial de django girls que está buenisimo: https://tutorial.djangogirls.org/es/django_start_project/#cambiando-la-configuración.

 

3. Creación de una app en django:

El manage.py va a ser uno de esos comandos que si nos enganchamos con django no vamos a dejar de usar. Con el nos vamos a valer para crear una app:

python manage.py startapp api

Esto crea una carpeta con archivos dentro de nuestro directorio de proyecto (obviamente tenemos que estar parados adentro de él) entonces otra estructura de carpetas como la siguiente:

website
├── website
|       __init__.py
|       settings.py
|       urls.py
|       wsgi.py
├── manage.py
└── api
    ├── migrations
    |       __init__.py
    ├── __init__.py
    ├── admin.py
    ├── models.py
    ├── tests.py
    └── views.py

Le puse api a esta app porque como vamos a usar django-rest-framework para crear una api rest con django, creo que un buen nombre es api, pero puede llamarse de cualquier manera.

4. Configuración general:

Una vez que creamos nuestra app o, del mismo modo, cuando instalamos algún pluggin de django es necesario agregarlo a nuestras installed_apps para que este incorporado no solo fisicamente al proyecto, sino lógicamente (quiero decir que podemos tener apps o pluggins que podemos activar y desactivar agregandolos o quitandolos de aquí):
INSTALLED_APPS = (
    ...
    'api',
    'rest_framework',
)

Continuamos en la segunda parte:

Django rest framework tutorial ii

 

Related Posts