Instalar #Django Framework para desarrollar aplicaciones #Web

Según Wikipedia:

Django es un framework de desarrollo web de código abierto, escrito en Python, que respeta el patrón de diseño conocido como Modelo–vista–controlador. Fue desarrollado en origen para gestionar varias páginas orientadas a noticias de la World Company de Lawrence, Kansas, y fue liberada al público bajo una licencia BSD en julio de 2005; el framework fue nombrado en alusión al guitarrista de jazz gitano Django Reinhardt.
En junio de 2008 fue anunciado que la recién formada Django Software Foundation se haría cargo de Django en el futuro.

La meta fundamental de Django es facilitar la creación de sitios web complejos. Django pone énfasis en el re-uso, la conectividad y extensibilidad de componentes, el desarrollo rápido y el principio No te repitas (DRY, del inglés Don’t Repeat Yourself). Python es usado en todas las partes del framework, incluso en configuraciones, archivos, y en los modelos de datos.

Yo discrepo en algo… Django sigue el patrón MVT, Model-View-Template. El patrón llamado MVT en Django hace referencia a modelo-vista-template, y es sencillo de entender, el modelo sigue siendo el modelo, en este caso, la vista no es una vista, sino que más bien es un controlador que se llama vista, y el template son las vistas del MVC, es decir, los formularios van en template, los formularios hacen peticiones a las vistas’, y las vistas obtienen datos de los modelos, es así de sencillo.

Entonces pasemos a Instalar Django. Primero necesitaremos algunas cosillas:

root@happyharry:/home/koratsuki/Dev_Stuff# apt install python-pip python-pip-whl python-virtualenv virtualenv virtualenvwrapper python-setuptools python-sqlite python-mysqldb python-psycopg2

¿Qué hicimos? Bueno, instalamos el soporte básico para Django, python-pip, python-pip-whl, python-virtualenv, virtualenv, virtualenvwrapper y python-setuptools, son necesarios por si los deseas instalar de internet o desde la consola después de habértelo descargado. Lo demás, python-sqlite, python-mysqldb y python-psycopg2, es solamente el soporte de bases de datos[SQLite, MySQL, y PostgreSQL respectivamente].

Django puede ser instalado de varias maneras:

Vía repositorio.

root@happyharry:/home/koratsuki/Dev_Stuff/virtual-envs# apt install python-django

Pero es la versión 1.7.11[en Debian 8], un poco viejita y muchas cosas han cambiado, por lo que si queremos estar al día, esta no nos sirve.

Vía consola.

En este modo sólo debemos descargar el tarball desde su página web, descomprimirlo en la consola y ejecutar:

koratsuki@happyharry:/home/koratsuki/django-x.y.z$ python setup.py install

Requiere python-setuptools. Nada más… Donde x-y-z es el número de versión de Django, ahora mismo la última versión estable es la 1.10.2.

Vía pip.

root@happyharry:/home/koratsuki/Dev_Stuff/virtual-envs# pip install django

Vía VirtualEnv.

Antes, una pequeña descripción. Virtualenv es una herramienta de desarrollo en Python escrita por Ian Bicking y usada para crear entornos aislados para python, en los que es posible instalar paquetes sin interferir con otros virtualenvs ni con los paquetes de python del sistema. Virtualenvwrapper, es un complemento para virtualenv diseñado por Dough Hellmann que facilita enormemente el uso de virtualenv.

Creamos una carpeta donde almacenaremos el virtualenv:

koratsuki@happyharry:/home/koratsuki/Dev_Stuff$ mkdir virtual-env

Activando el virtualenv:

koratsuki@happyharry:/home/koratsuki/Dev_Stuff$ virtualenv ./virtual-env/ -p python
Running virtualenv with interpreter /usr/bin/python
New python executable in ./virtual-env/bin/python
Installing setuptools, pip...done.

koratsuki@happyharry:/home/koratsuki/Dev_Stuff$ cd virtual-env/

koratsuki@happyharry:/home/koratsuki/Dev_Stuff/virtual-env$ source bin/activate

Ahora a descargar Django:

(virtual-env)koratsuki@happyharry:~/Dev_Stuff/virtual-env$ pip install django
Downloading/unpacking django
Downloading Django-1.10.2-py2.py3-none-any.whl (6.8MB): 8.2kB downloaded

Y así hasta que termine de descargar. Cuando acaba automáticamente lo instala. Como ven, nada díficil.

Si eres de esos que vive detrás de un proxy debes setear las variables de entorno en la consola del virtualenv:

(virtual-env)koratsuki@happyharry:~/Dev_Stuff/virtual-env$ export https_proxy="http://user:pass@proxy:puerto"
(virtual-env)koratsuki@happyharry:~/Dev_Stuff/virtual-env$ export http_proxy="http://user:pass@proxy:puerto"
(virtual-env)koratsuki@happyharry:~/Dev_Stuff/virtual-env$ export ftp_proxy="http://user:pass@proxy:puerto"

Y después ejecutar nuevamente:

(virtual-env)koratsuki@happyharry:~/Dev_Stuff/virtual-env$ pip install django

Vía easy_install.

(virtual-envs)koratsuki@happyharry:~/Dev_Stuff/virtual-env$ easy_install django

Y para salir del virtualenv e ir a la consola:

(virtual-env)koratsuki@happyharry:~/Dev_Stuff/virtual-env$ deactivate

Ahora bien, no tengo internet, o está muy lenta, pero tengo Django descargado y quisiera ponérselo a ese virtualenv… ¿Cómo lo hago?

Copio Django para una carpeta dentro del virtualenv y desde ahí lo instalo. Así de fácil:

(virtual-env)koratsuki@happyharry:~/Dev_Stuff/virtual-env/tmp/Django-1.9.4$ ls -lsa
total 124
4 drwxrwxr-x 11 koratsuki koratsuki 4096 Oct 8 12:42 .
4 drwxr-xr-x 3 koratsuki koratsuki 4096 Oct 8 12:41 ..
32 -rw-rw-r-- 1 koratsuki koratsuki 29323 Mar 5 2016 AUTHORS
4 drwxr-xr-x 5 koratsuki koratsuki 4096 Oct 8 12:42 build
4 -rw-rw-r-- 1 koratsuki koratsuki 1115 Mar 5 2016 CONTRIBUTING.rst
4 drwxr-xr-x 2 koratsuki koratsuki 4096 Oct 8 12:42 dist
4 drwxrwxr-x 17 koratsuki koratsuki 4096 Oct 8 12:42 django
4 drwxrwxr-x 2 koratsuki koratsuki 4096 Mar 5 2016 Django.egg-info
4 drwxrwxr-x 13 koratsuki koratsuki 4096 Mar 5 2016 docs
4 drwxrwxr-x 2 koratsuki koratsuki 4096 Mar 5 2016 extras
4 -rw-rw-r-- 1 koratsuki koratsuki 637 Mar 5 2016 Gruntfile.js
4 -rw-rw-r-- 1 koratsuki koratsuki 611 Feb 20 2016 INSTALL
4 drwxrwxr-x 4 koratsuki koratsuki 4096 Mar 5 2016 js_tests
4 -rw-rw-r-- 1 koratsuki koratsuki 1552 Feb 20 2016 LICENSE
4 -rw-rw-r-- 1 koratsuki koratsuki 378 Mar 5 2016 MANIFEST.in
4 -rw-rw-r-- 1 koratsuki koratsuki 334 Mar 5 2016 package.json
4 -rw-rw-r-- 1 koratsuki koratsuki 1196 Mar 5 2016 PKG-INFO
4 -rw-rw-r-- 1 koratsuki koratsuki 1803 Feb 20 2016 README.rst
4 drwxrwxr-x 2 koratsuki koratsuki 4096 Mar 5 2016 scripts
4 -rw-rw-r-- 1 koratsuki koratsuki 718 Mar 5 2016 setup.cfg
4 -rw-rw-r-- 1 koratsuki koratsuki 3265 Mar 5 2016 setup.py
12 drwxrwxr-x 208 koratsuki koratsuki 12288 Mar 5 2016 tests

Ahora sólo queda:

(virtual-envs)koratsuki@happyharry:~/Dev_Stuff/virtual-env/tmp/Django-1.9.4$ python setup.py install

Installing django-admin.py script to /home/koratsuki/Dev_Stuff/virtual-env/bin
Installing django-admin script to /home/koratsuki/Dev_Stuff/virtual-env/bin

Installed /home/koratsuki/Dev_Stuff/virtual-env/lib/python2.7/site-packages/Django-1.9.4-py2.7.egg
Processing dependencies for Django==1.9.4
Finished processing dependencies for Django==1.9.4

Y listo…

Virtualenvwrapper es una utilidad que mejora/acomoda el uso de los virtualenvs, que no es obligatoria en este caso de instalar Django, por lo que no voy a tocar ese tema aquí. Pero existen geniales posts en internet explicando su instalación/configuración y uso.

Hasta aquí todo bien, si se me pasó algo no no entiendes algún detalle, a comentarios, como siempre un saludo y espero les sirva.

7 comentarios de “Instalar #Django Framework para desarrollar aplicaciones #Web

  1. Buen tutorial. Añadir que dentro del virtualenv es bueno hacer pip freeze > req.txt de vez en cuando luego de instalar dependencias. Así podrás reproducir el entonrno exacto en cualquier lugar con pip install -r req.txt

  2. Hola @Koratsuki. Esas configuraciones sirven para ambas versiones de Python o solamente para la 2.7. Personalmente en una instalación de Django en openSUSE Leap 42 no podía encontrar la ruta a la versión 3.5 de Python, lo pude solucionar, sin embargo no recuerdo lo que hice -ya pasó un buen tiempo-. Otra razón es que yo haya cometido un error, tal vez no encontraba Python en sí, porque creo que openSUSE Leap 42 debería tener la versión 3.5 por default.

    Debo admitir que Django es bastante complejo para mi, no obstante siempre trato de estar informado y rescatar lo más que se pueda. Gran tutorial!

    Saludos.

      • @Koratsuki: Si puedo! mándamelos al correo, mira, deja explicarte, yo comencé hace poco con Django, (si, se que es demasiado para un noob que solo ha trasteado algo de PHP) , tengo un libro, y estoy siguiendo los ejemplos al pie de la letra ¿Tienes documentación actualizada? cursos, libros? en español? si es asi igual te agradezco un envio 😉

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *