En mi trabajo me toco manejar el backend con Django y se me hizo bastante duro el comprenderlo, además que no me gustaba mucho python debido a que por un mal espaciado produce errores, prefiero usar corchetes y punto y coma.
Pero el trabajo me solicitaba utilizarlo y así pude descubrir su potencial que habiendo manejado lenguajes backend como JS con NodeJS, PHP con Laravel y ahora Python con Django, mi orden de frameworks más recomendados y optimizados serián:
- NodeJS
- Django
- Laravel
Algunos tips y funciones útiles que puedes o no utilizarlas van a ser listadas y el blog se ira actualizando mediante la profundización en el framework siga avanzando.
Lanzar Errores Propios en formato JSON
# Importar la librería
from rest_framework.exceptions import APIException
# Utilizar la librería
raise APIException("el mensaje a ser retornado")
Manejo de Migraciones
Cuando se necesite resetear las migraciones debido a algún conflicto que tengamos o porque no se aplican los cambios hechos, debemos tomar en cuenta dos casos:
Si podemos borrar toda la BDD
Lo primero que debemos hacer es borrar todos los archivos en la carpeta migraciones excepto el archivo init.py .
find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc" -delete
Luego de eso podemos crear de nuevo las migraciones con el comando:
python manage.py makemigrations
y ejecutamos las migraciones con el comando:
python manage.py migrate
Si borrar toda la BDD no es posible
Primero debemos limpiar las migraciones con el comando:
python manage.py migrate --fake nombreAplicacion zero
Si queremos comprobar que se limpiaron correctamente ejecutamos el siguiente comando y nos listara de cada aplicación las migraciones respectivas
python manage.py showmigrations
Luego de eso procedemos a borrar todos los archivos en la carpeta migraciones excepto el archivo init.py .
find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc" -delete
Luego de eso podemos crear de nuevo las migraciones con el comando:
python manage.py makemigrations
y ejecutamos las migraciones agregando la bandera --fake-initial para que django marque las migraciones como ejecutadas cuando realmente no lo hace, para evitar el problema de que algunas tablas ya existen:
python manage.py migrate --fake-initial
Exportar/Importar datos con Django
Para crear un fixture con los datos actuales el comando es:
python manage.py dumpdata api > api/fixtures/all_2020_02_25_final.json
Para cargar datos desde el fixture creado
python manage.py loaddata api/fixtures/all_2020_02_25_final.json
Hecho esto podemos trabajar normalmente con este gran Framework de Python
Autor
Stalin Maza