Python

Enlaces

Aprendizaje

Módulos interesantes

Entorno Django

Para tener un entorno aislado (sin depender con los paquetes y versiones del sistema), instalar primero pip de Python3. Se puede hacer instalando el paquete python3-pip de Ubuntu, pero dado que interesa actualizar a la última versión, es mejor instalarlo de forma independiente bajando el script get-pip.py de aquí ejecutándolo así:

$ sudo python3 get-pip.py

Después ejecutar en terminal:

$ sudo pip3 install virtualenv
$ virtualenv --python=`which python3` djangodev
$ source djangodev/bin/activate
(djangodev) $ pip install Django

Cada vez que se quiera adaptar el entorno de la sesión del terminal a este entorno aislado, hay que ejecutar el penúltimo comando anterior (source).

Entorno Django en Synology NAS

  1. Instalo módulo Python3 desde el Centro de Paquetes.
  2. Instalo pip en Python3:

     $ wget -nd https://bootstrap.pypa.io/get-pip.py
     $ python get-pip.py
     $ cd /usr/local/bin
     $ sudo ln -s /volume1/@appstore/py3k/usr/local/bin/pip3
    
  3. Instalo virtualenv:

     $ sudo pip3 install virtualenv
     $ python3 /volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/virtualenv.py --python=`which python3` djangodev
    
  4. Arranco el entorno virtual e instalo Django:

     $ source djangodev/bin/activate
     (djangodev) $ pip install Django
    

Creación de proyecto Django

Desde el directorio donde queremos que se cree ejecutamos:

(djangodev) $ django-admin startproject project01

Creación de aplicación Django

Desde el directorio del proyecto (donde se encuentre el fichero manage.py) ejecutamos:

(djangodev) $ python manage.py startapp app01

Para incorporar los modelos de la nueva aplicación al mantenimiento automático que proporciona el módulo admin de Django, hay que incorporar al fichero project01/settings.py lo siguiente en la sección INSTALLED_APPS:

INSTALLED_APPS = [
    'app01.apps.App01Config',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

Luego ejecutamos el siguiente comando para generar las migraciones a partir de los modelos definidos en la app:

(djangodev) $ python manage.py makemigrations app01

Finalmente ejecutamos las migraciones propiamente dichas:

(djangodev) $ python manage.py migrate

Para poder utilizar el módulo admin de Django, hay que crear al menos un usuario:

(djangodev) $ python manage.py createsuperuser

Gestión de migraciones

Una vez generadas las migraciones, si queremos obtener el código SQL a que equivalen hay que ejecutar el comando (en el ejemploo solicitamos el código correspondiente a la migración 0008):

(djangodev) $ python manage.py sqlmigrate app01 0008

Para situarnos en un punto concreto de la serie de migraciones (deshaciendo por tanto las posteriores cuyos ficheros se podrán borrar):

(djangodev) $ python manage.py migrate app01 0010

Para mostrar los nombres de todas las migraciones (si no ponemos el nombre al final se muestran las de todo el sitio):

(djangodev) $ python manage.py showmigrations app01

Para deshacer todas las migraciones:

(djangodev) $ python manage.py migrate app01 zero

Directorio instalación Django

Para averiguar dónde están los ficheros de Django, ejecutar el siguiente comando:

(djangodev) $ python -c "import django; print(django.__path__)"

Tutorial Django

Referencia Django

filter, list comprehension y generators

Fuente. Para filtrar por ejemplo una lista de objetos se pueden utilizar estos tres elementos. Hay que tener en cuenta que filter devuelve un iterator. Si por eejemplo sólo queremos el número de elementos habrá que generar una lista o set con él.