Django

synopsis

Comando útiles para django

Información

Mostrar la versión de django instalada:

$ python -m django --version

Mostrar las librerias instaladas:

$ pip freeze

Correr la terminal del proyecto:

$ python manage.py shell

Nota

manage.py: es el empaquetador de django

Proyecto

Creando proyecto:

$ django-admin startproject <proyect-name>

$ django-admin startproject <proyect-name> .

Nota

Para que una carpeta sea reconocida como un paquete debe contener el archivo __init__.py

Crear una app:

$ django-admin startapp <package-name>

$ django-admin startapp <package-name> <directory>

Modelos

Documentación

Actualizar nuevos modelos:

$ python manage.py makemigrations <package-name>

$ python manage.py migrate <package-name>

Crear la migraciones:

$ python manage.py migrate

Nota

Django crea 10 tablas por default

Crear modelos a partir de la base de datos:

python manage.py inspectdb > models.py

Administrador

Crear superusuario:

$ python manage.py createsuperuser

Nota

Registar modelos en el archivo admin.py de cada paquete

Servidor

Ejecutar el servidor de desarrollo:

$ python manage.py runserver

Especificar el puerto:

$ python manage.py runserver 8080

Escuchar todas las IPs públicas y especificar un puerto:

$ python manage.py runserver 0.0.0.0:8000

Datos

Comando para extraer datos:

$ python manage.py dumpdata --indent 4 > output.json

$ python manage.py dumpdata app.model --indent 4 > output.json

$ python manage.py dumpdata --exclude=admin.logentry --exclude=auth.permission --exclude=contenttypes --exclude=sessions --indent 4 > output.json

Comando para importar datos:

$ python manage.py loaddata output.json

Ignorar los campos y modelos que pueden haberse eliminado desde que se generó originalmente el fixture:

--ignorenonexistent, -i

Excluyendo apps:

--exclude

Especificando app:

--app

Reseteando migraciones

Eliminar manualmente las migraciones:

$ rm -r path/to/app/migrations/*

Eliminar de la base de datos la tablas relacionadas a nuestra app:

Crear migraciones:

$ python manage.py makemigrations <app>

Limpiar el historial de migraciones:

$ python manage.py migrate --fake <app> zero

Mostrar el estado de las migraciones:

$ python manage.py showmigrations

Aplicar las migraciones a la base de datos:

$ python manage.py migrate

Mostrar el estado de las migraciones:

$ python manage.py showmigrations

Traducciones

Configurar el idioma:

LANGUAGE_CODE = "es"
LANGUAGE_COOKIE_NAME = 'es'
LANGUAGES = (
   ('es', _('Spanish')),
   ('en', _('English'))
)

Extraer textos para traduccir:

python manage.py makemessages --all

Compilar textos:

django python manage.py compilemessages

Nota

Luego de compilar los mensajes es necesario reiniciar el servidor

Corriendo comandos en docker

Correr el servicio de django aparte:

$ docker-compose stop django && docker-compose run --rm --service-ports django

Cargar datos:

$ docker-compose run --rm django python manage.py loaddata fixtures/data.json

Correr shell plus:

$ docker-compose run --rm django python manage.py shell_plus

Extrar datos:

$ docker-compose run --rm django python manage.py dumpdata --exclude=admin.logentry --exclude=auth.permission --exclude=contenttypes --exclude=sessions --indent 4 > backup.json

Acceder a una base mysql:

$ docker exec -it <container> mysql -u <user> -h <host> -p <dbname>

Acceder a una base postgresql:

$ docker exec -it <container> psql <dbname> -U <username>

Acceder a base de datos y extrar un backup psql:

$ echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" |sudo tee  /etc/apt/sources.list.d/pgdg.list

$ sudo apt update

$ sudo apt install postgresql-client-12

$ pg_dump -h=host -p=port -U=postgres -d=dbname -F c -f backup.sql