weprikjm / prueba-django

formacion DRF

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Formación Django

importante python se escribe con snakecase

Trabajar con django

  1. Activar entorno virtual (Hay que hacerlo siempre para levantar el proyecto):
source .env/bin/activate
# puede estar en otro sitio, como .venv/bin/activate
# o env/bin/activate, por ejemplo
  1. Comprobar que en la terminal aparece ya el entorno virtual:
patricia@MacBook prueba-django %                # <- en mac
(prueba-django) patricia@MacBook: $             # <- en linux
  1. Con el entorno activado, ejecutar las migraciones (instrucciones para hacer cambios en la base de datos). Son necesarias siempre que se modifica la base de datos (edición, creación de modelos, etc):
python backend/manage.py migrate
  1. Con el entorno activado, levanto el proyecto:
python backend/manage.py runserver

Empezar un nuevo proyecto

  1. Primero instalar un entorno virtual (evita conflictos de versiones) en la carpeta ".env":
python3 -m venv .env/
  1. Activar el entorno virtual:
source .env/bin/activate

En la terminal aparece ya el entorno virtual: patricia@MacBook-Pro-de-Patricia prueba-django %

  1. Instalo Django
python -m pip install Django
  1. Compruebo que está instalado viendo la versión
python -m django --version

python -m indica que selecciones el modulo X, en este caso Django

  1. Con el entorno activado, creo archivos de django, llamando al proyecto "backend":
django-admin startproject backend
  1. Ejecuto las migraciones:
python backend/manage.py migrate
  1. Creo un administrador (un primer usuario con permisos de admin):
python backend/manage.py createsuperuser
# username: admin, email: admin@gmail.com, password:admin

Estructura y vistas

En django el proyecto se organiza en apps (carpetas) que por lo general se organizan por funcionalidad (artículos, compras, etc).

  1. Para crear una app llamada articles usar este comando:
python backend/manage.py startapp articles
  1. Una vez tengo la app, tengo que añadirla en el fichero de settings.py en la variable INSTALLED_APPS.

Parámetros para llamar a los endpoints

  • queryparams (son opcionales, caso más habitual: filtros)
  • parametros dentro de la url (son necesarios para la función definida)
  • parametros que envío con un post en el body (se usan cuando son más complejos, enviar json etc)

Modelos

Son los archivos que reflejan la estructura de la base de datos

Cada modelo en su propio archivo

  • Si en lugar de tener solo un archivo models.py quiero tener una carpeta para organizar modelos, creo una carpeta llamada models y dentro un archivo __init__.py (este archivo indica que esta carpeta es un módulo, y que por tanto voy a poder importar funciones de archivos en esa carpeta)

Ver los modelos en el admin de django

  • Dentro de su app, si quiero mostrarl en el admin un modelo para poder editarlo desde allí, tengo que registrarlos en el archivo admin.py:
from django.contrib import admin
from .models import Article # importar modelo que vas a registrar

admin.site.register(Article) # Registro simple

Migraciones

Documentación de Django

  1. Cuando creo, elimino o modifico un modelo, hay que generar las migraciones (instrucciones da cambio para la base de datos). Para ello ejecuto el comando:
python backend/manage.py makemigrations
  1. Una vez se han generado, ejecuto las migraciones con el comando:
python backend/manage.py migrate

Migraciones custom (manuales)

from django.db import migrations

def apply_migration(apps, *args):
    ModeloAMigrar = apps.get_model("app_donde_esta_el_modelo", "ModeloAMigrar")
    # hacer cosas con el modelo

def revert_migration(apps, *args):
    ModeloAMigrar = apps.get_model("app_donde_esta_el_modelo", "ModeloAMigrar")
    # deshacer cosas con el modelo

class Migration(migrations.Migration):

    dependencies = [
        ("app_1", "0004_nombre_migracion_previa"), # <- migraciones previas necesarias
        ("app_2", "0025_nombre_migracion_previa"), # <- migraciones previas necesarias
    ]

    operations = [
        migrations.RunPython(apply_migration, revert_migration)
    ]

Testing

Documentación de django.

Django utiliza el módulo unittest

About

formacion DRF


Languages

Language:Python 100.0%