Curso Básico de Django - PPT

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 76

CURSO BÁSICO

DE DJANGO
LEONARDO FRANCISCO CURACA SUCAPUCA
PRIMER
MÓDULO
Conociendo
a tu instructor
Presentación del docente
Ahora, conoceremos algunos aspectos relevantes
del experto y del contenido a abordar en este curso.
Los temas que abordaremos son:
¿Quién soy?
¿Qué hago? Mi experiencia
¿Por qué es importante llevar este curso?
¿Qué aprenderás en este curso?
¿Qué necesitas para llevar a cabo este curso?
LEONARDO CURACA
¿Quién soy?
Técnico profesional, graduado en Diseño de Software
e Integración de Sistemas en Tecsup.

¿Qué hago?
Más de 2 años de experiencia, participando y
liderando proyectos muy diversos, desde sitios web
hasta aplicaciones web complejas.
¿Por qué es importante
llevar este curso?
Django, se caracteriza por ser uno de los
frameworks en desarrollar aplicaciones en
menor tiempo y a menor costo. Este curso,
te mostrará los primeros pasos para
incursionar y aprender desde cero.
¿Qué aprenderán
en este curso?
Aprenderán los conceptos básicos de
Django, su instalación, los primeros pasos
para su uso, la funcionalidad de su ORM y de
su consola interactiva; además aprenderás a
configurar el administrador y crear vistas.
¿Qué necesitas para
llevar a cabo este curso?
■ Python 3.6+

■ HTML básico
¿Qué es Django?
Ahora, realizaremos nuestra primera
aproximación al framework Django.
Los temas que abordaremos son:
¿Qué es un Framework?
¿Qué es Django?
Características
¿Qué es un Framework?
Es un conjunto de herramientas y librerías
que nos ayudarán a desarrollar aplicaciones
de forma rápida y fácil.

Se encargan de automatizar
funcionalidades repetitivas para que
podamos concentrarnos en escribir código
y evitar pensar en reinventar la rueda.
¿Qué es Django?
Es un framework web que se enfoca en la
simplicidad y el desarrollo rápido de
aplicaciones.

Fue creado en 2003 por un grupo de


desarrolladoras que querían crear un
framework fácil de usar y que tuviera un
buen diseño.

Es usado por grandes empresas como


Instagram, Pinterest y The New York Times.
Características
■ Desarrollo rápido y sencillo.

■ Marco de trabajo completo.

■ Se toma la seguridad muy en serio.

■ Excesivamente escalable.

■ Increíblemente versátil.
SEGUNDO
MÓDULO
Primeros Pasos
Instalación
Ahora, explicaremos los primeros
pasos para la instalación.
Los temas que abordaremos son:
Instalación de Python
Visual Code
Entorno Virtual
Django
Nuevo proyecto
Instalación de Python
Para seguir este curso, necesitarás tener Python instalado
en tu computadora. En este caso lo usaremos a partir de la
versión 3.6.

Si tienes python instalado puedes verificar la versión con el


siguiente comando:

python --version

En caso de no tener instalado puedes descargar la última


versión desde el siguiente enlace:

https://www.python.org/downloads/
Visual Code
Visual Code es un editor de código que nos permitirá
editar y ejecutar nuestro proyecto de Django. Además de
proporcionarnos herramientas que nos facilitarán nuestro
desarrollo.

Puedes descargar este programa desde el siguiente


enlace:

https://code.visualstudio.com/
Entorno Virtual
Un entorno virtual es un espacio en
nuestra computadora que contiene todos
los archivos necesarios para que funcione
un proyecto de Python. Nos permite
tener varios proyectos en la
computadora con sus propias
dependencias y nos asegurará que no
haya conflicto entre ellos.
Instalación de Django
Django viene preinstalado en algunas versiones de Python, pero es
posible que necesites actualizarlo o instalarlo por separado. Para
instalar Django, puedes usar el administrador de paquetes pip.

Pip es un administrador de paquetes de Python que nos permite


instalar y actualizar fácilmente paquetes de Python. Para instalar
Django con pip, escribiremos el siguiente comando:

pip install django


Creando un Proyecto
Para crear un nuevo proyecto, abre la consola y cambia a la carpeta
en la que quieres guardar el proyecto. Luego, ejecuta el siguiente
comando:

django-admin startproject [project_name]

Este comando creará una nueva carpeta con el nombre indicado que
contendrá todos los archivos necesarios para nuestro proyecto. El
punto al final del comando indica que queremos que la nueva
carpeta se cree en el mismo directorio.
Estructura del proyecto
Ahora, analizaremos la estructura
de un proyecto básico.
Los temas que abordaremos son:
Archivos y carpetas
Archivos principales
■ manage.py es un script que nos permite interactuar con nuestro
proyecto desde la consola.

■ settings.py contiene todos los ajustes para nuestro proyecto, desde


base de datos y aplicaciones, hasta zonas horarias e idiomas.

■ urls.py guarda todas las direcciones de nuestro proyecto.


Servidor de desarrollo
Ahora, explicaremos cómo ejecutar la
aplicación y visualizar el resultado.
Los temas que abordaremos son:
Ejecución del entorno de desarrollo
Recomendaciones de uso
Previsualización
Ejecución
El servidor de desarrollo es un servidor web integrado que se ejecuta en nuestra
computadora y podemos usar para probar el código de nuestro proyecto.

El comando a utilizar para inicializarlo es: python manage.py runserver

Watching for file changes with StatReloader


Performing system checks...

System check identified no issues (0 silenced).


November 09, 2022 - 18:48:36
Django version 4.1.3, using settings ‘myproject.settings’
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

Recomendación
Esl servidor de desarrollo, no debe usarse en un entorno de producción,
para esto puedes usar servidores web como Apache o Nginx.
Ejecución
Al ejecutar el comando anterior habremos iniciado el servidor de
desarrollo en el puerto 8000 de nuestra computadora. Para ver tu sitio
web, abre tu navegador y dirígete a la siguiente dirección:

localhost:8000
Nuestra primera
aplicación
Ahora, explicaremos los
pasos para crear una app.
Los temas que abordaremos son:
Creación de una app
Archivos y carpetas
Creación de una app
Django se compone de una serie de aplicaciones, cada una de las
cuales tiene un propósito específico.

Para crear tu aplicación, escribe el siguiente comando:

python manage.py startapp [app_name]

Esto creará carpeta con el nombre indicado luego de startapp con


distintos archivos que harán funcionar a nuestra aplicación.
Archivos principales
■ admin.py se encarga de registrar nuestros modelos al Administrador de Django.

■ models.py contendrá todos los modelos de la aplicación.

■ tests.py es un archivo orientado al desarrollo de pruebas de la aplicación.

■ views.py contendrá todas las vistas en forma de función o clase que retornarán
un resultado a una petición del cliente.
TERCER
MÓDULO
El ORM de Django
¿Qué es un ORM?
Ahora, explicaremos los
principios de un ORM.
Los temas que abordaremos son:
¿Qué es y cómo funciona?
Primeras migraciones
¿Qué es y cómo funciona?
■ Un ORM es una capa de abstracción que nos permite mapear nuestro código a
una base de datos.

■ El ORM de Django se basa en el patrón Active Record, el cual permite


representar tabla como clases y registros como objetos.

■ Una de las ventajas es que podemos cambiar de motor de base de datos sin
necesidad de cambiar el código de nuestro proyecto.
Primeras migraciones
Las migraciones son cambios que hacemos en nuestra base de datos
cuando creamos o modificamos un modelo. Django se encarga de
actualizar las tablas de nuestra base de datos en base a dichas migraciones,
las cuales nos permiten aplicar estos cambios de forma sencilla y segura.

Si en nuestro proyecto vemos el siguiente mensaje:

You have 18 unapplied migration(s). Your Project may not work properly…

Podemos aplicar los cambios ejecutando el siguiente comando:

python manage.py migrate


Creando modelos
Ahora, explicaremos sobre
la primera tabla en Django.
Los temas que abordaremos son:
Primeros Modelos
Registrando nuestra app
Migraciones
Primeros modelos
Un modelo es una abstracción de una tabla de base de datos, representada
en un objeto de Python.

El uso de objetos nos permite interactuar de forma más amigable y sencilla


con nuestros registros, además de poder programar funcionalidades extra.

class Category(models.Model):
name = models.CharField(max_length=100)

class Meta:
verbose_name_plural = ‘Categories’

def __str__(self):
return self.name
Registrando nuestra app
OJO, recuerda que para que nuestra app sea detectada por nuestro proyecto y, de
esta forma, podamos migrar nuestros modelos, debes registrar tu aplicación en el
archivo settings.py

Para ello solo debes agregar el nombre de tu aplicación a la lista INSTALLED_APPS.

INSTALED_APPS = [
‘django.contrib.admin’,
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.messages’,
‘django.contrib.staticfiles’,
‘shop’,
]
Migraciones
Recuerda que cuando crees un nuevo modelo o modifiques alguno
de ellos, debes plasmar dichos cambios en tu base de datos. Para
ello debes crear tus migraciones con:

python manage.py makemigrations

Y luego migrar tus cambios con:

python manage.py migrate


CUARTO
MÓDULO
Consola interactiva
de Django
Interactive Shell
Ahora, explicaremos la
funcionalidad de Interactive Shell.
Los temas que abordaremos son:
¿Qué es?
Accediendo al Shell
Leer y registrar datos
¿Qué es?
La consola interactiva de Django es una herramienta que permite a los
desarrolladores ejecutar comandos de Django directamente desde la línea
de comandos.
Accediendo al Shell
Para acceder al Shell de Django, debes ejecutar el siguiente comando en tu consola:

python manage.py shell

Python 3.10.7 (tags/v3.10.7:6cc6b13, Sep 5 2022, 14:08:36) [MSC v.1933 64 bit (AMD64)] on win32
Type “help”, “copyright”, “credits” or “license” for more information.
(InteractiveConsole)
>>> █
Leer y registrar datos
Recuerda que para crear un registro, debes importar previamente
tus modelos y utilizar el método save de la siguiente forma:

from shop.models import *


category = Category(name=’Abrigos’)
category.save()

Y para obtener todos los registros de un modelo en específico


puedes usar el siguiente método:

Category.objects.all()
Métodos
Ahora, explicaremos las
características de los modelos.
Los temas que abordaremos son:
__str__
Propiedades
Personalización
__str__
Por defecto al imprimir un modelo obtenemos el siguiente
resultado:

Product: Product object (1)

Podemos cambiar esto utilizando el método __str__.

Para ello debemos definir dicha función la clase de nuestro


modelo que retorne el campo que queramos mostrar.

def __str__(self):
return self.name
Propiedades y funciones
El uso de propiedades o funciones en tus modelos permite reducir el
número de líneas de código al agrupar todas las acciones repetitivas.

@property

def precio_total(self):
return self.cantidad * self.precio

Al hacer esto, puedes aprovechar esta función para brindar más


información en tu Administrador, en tu carrito de compras o en el detalle de
un producto. Sin tener que implementar la misma lógica por cada uno.
Personalización
Cuando deseamos listar los elementos relacionados a un objeto en específico utilizamos el
siguiente método:

category.product_set.all()

Podemos cambiar esto definiendo el atributo related_name al campo de tipo ForeignKey:

category = models.ForeignKey(Category, on_delete=models.CASCADE,


related_name='products')

De esta forma podremos obtener los productos de una categoría de la siguiente forma:

category.products.all()
Modificando más registros
Ahora, explicaremos los pasos para
modificar el tratamiento de registros.
Los temas que abordaremos son:
El método filter
Actualizando y eliminando registros
El método filter
Filter te permite obtener varios registros en base a una condición.
Podemos indicar los parámetros de la siguiente forma.

Producto.objects.filter(name__startswith = ‘A’)

Esta consulta obtendrá todos los productos cuyo nombre empiece


con la letra A.

Si deseas más información sobre parámetros al filtrar puedes


consultar el siguiente enlace:

https://docs.djangoproject.com/en/4.1/ref/models/querysets/#id4
Actualizando y eliminando registros
Para actualizar un registro basta con especificar el campo a reemplazar.

producto.nombre = ‘Pantalón Rojo’


producto.save()

Para eliminar un registro debes ejecutar el método delete() de la siguiente forma:

producto.delete()
QUINTO
MÓDULO
El administrador
de Django
Instalación y configuración
Ahora, explicaremos cómo acceder
y configurar el administrador.
Los temas que abordaremos son:
¿Qué es Administrador de Django?
Añadiendo módulos al Administrador
Creando un super usuario
Personalización
¿Qué es administrador de Django?
Es una herramienta muy útil y fácil de usar para
poder administrar los modelos de nuestro
proyecto.

Implementarlo permite separar nuestro


proyecto en dos entornos, uno público y otro
para generación o configuración de contenidos.
Añadiendo módulos
al Administrador
Si deseas administrar un módulo desde el Administrador
de Django, puedes añadirlo de la siguiente forma:

admin.site.register(Category)
Creando un super usuario
Para ingresar al Administrador, necesitamos identificarnos con
un usuario, por lo que ejecutaremos el siguiente comando:

python manage.py createsuperuser

Automáticamente el servidor nos pedirá los siguientes datos:

■ usuario
■ correo
■ contraseña
Personalización
Para brindar una mejor presentación a nuestro Administrador,
podemos modificar nuestro registro de la siguiente forma:

@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
list_display = ('name', 'price', 'category', 'is_active')
list_filter = ('category', 'is_active')
search_fields = ('name', 'description')

Indicando la propiedad o el campo en cada apartado, podremos


ordenar la tabla de listado, definir opciones de filtro y buscar
registros, respectivamente.
SEXTO
MÓDULO
Views
Vistas y URL’s
Ahora, explicaremos la creación de vistas.
Los temas que abordaremos son:
¿Qué son las vistas?
Creando vistas
Creando URL’s
¿Qué son las vistas?

Son funciones de Python que se encargan de


generar la respuesta a una petición del cliente.

Estas pueden estar orientadas a funciones o clases.


Propiedades y funciones
En el archivo views.py podremos definir nuestras vistas
siguiendo la siguiente estructura:

def index(request, id):


return HttpResponse(‘Hello World’)

En una visa es importante obtener la solicitud o request.

Los siguientes parámetros como id serán obligatorios en caso


estemos buscando obtener alguna variable de la url.

Finalmente siempre debemos devolver un resultado, en este


caso un HttpResponse.
Propiedades y funciones
La definición de una url debe seguir la siguiente estructura:

path('product/<int:pk>/', product_detail, name='product_detail')

Constituye tanto el patrón y variables de la url, como la view a


utilizar y el nombre para identificarla de forma opcional.

Para que nuestras urls funcionen deben ser registradas en el


proyecto de la siguiente forma:

path('', include('shop.urls'))

Indicando el prefijo que hará uso las URL’s y la función include con
la ubicación de las URL’s en la app.
Templates
Ahora, explicaremos cómo organizar la
información de nuestras vistas con HTML.
Los temas que abordaremos son:
La función render
Jinja
¿Cómo evitar el Hard Coding?
La función render
Si deseamos diseñar nuestras propias plantillas para estructurar mejor
nuestra información, podemos retornar la función render en nuestras vistas:

return render(request, 'shop/index.html', context)

A esta función le pasamos la solicitud, la ruta de nuestra plantilla y,


opcionalmente, un diccionario con toda la información que utilizaremos.
¿Qué es?

Es una biblioteca de templating de Python que se


puede usar para generar documentos HTML o XML.
¿Cómo es evitar el Hard Coding?
■ El Hard Coding se produce cuando se almacena información de
manera estática en una aplicación en lugar de permitir que la
información se cargue dinámicamente de una fuente externa.

■ En las plantillas de Django podemos utilizar la función {% url %}


Error 404
Ahora, explicaremos la corrección de errores.
Los temas que abordaremos son:
La función get_object_or_404
Recomendaciones
La función get_object_or_404
Si deseamos evitar mostrar un mensaje de error en caso de no encontrar un
registro en específico podemos utilizar la siguiente función:

product = get_object_or_404(Product, id=id)

A esta función le pasamos tanto el modelo como el parámetro de identificación.


Recomendaciones

Usar este método permite generar confianza con el usuario final. Por lo que es
importante cubrir cada caso que pueda generar confusión al cliente.

El error 404 es personalizable, por lo que podrás diseñar tu propia página 404.
SÉPTIMO
MÓDULO
Forms
Construyendo
un formulario
Ahora, explicaremos cómo
construir un formulario.
Los temas que abordaremos son:
¿Qué es un formulario?
Nuestro primer formulario
{% csrf_token %}
El método POST
¿Qué es un formulario ?
■ Son una manera común de interactuar con los usuarios, ya
sea para integrar datos o recopilar información.

■ Estos pueden incluir campos de texto, casillas de selección,


botones y otros elementos interactivos.

■ La información recolectada puede ser enviada a un servidor


web para su procesamiento, almacenamiento o respuesta.
Nuestro primer formulario
Recuerda que un action es una dirección url a la cual
se enviarán los datos del formulario mediante el
protocolo POST.

<form method="post">

En este caso no definimos el action puesto que


enviaremos los datos a la misma vista del formulario.
¿Qué es un CSRF?
■ Es un tipo de ataque malicioso a un sitio web
en el que comandos no autorizados son
transmitidos por un usuario en el cual el sitio
web confía.

■ Django protege contra este tipo de ataque


mediante un token CSRF.

■ Se genera una clave única para cada


formulario que es validada al momento de
realizar la solicitud.
El método POST
¡OJO! Recuerda que al definir el método de nuestro
formulario como POST, solicitamos al servidor que acepte
los datos incluidos en el cuerpo del mensaje de la solicitud.
Vista para crear
Ahora, explicaremos cómo procesar los
datos recibidos a través del formulario.
Los temas que abordaremos son:
Obteniendo datos de la solicitud
Creando un nuevo Producto
Los métodos redirect y reverse
Obteniendo datos de la solicitud
Recuerda que debemos asegurarnos que el método sea POST
de la siguiente forma:

if request.method == 'POST':

Y obtendremos los datos de la solicitud con el método get().

name = request.POST.get('name')
Redirect y Reverse
La función redirect permite redirigir al usuario a una dirección url, mientras
que reverse permite construir una url en base a su nombre y parámetros.

Juntos se pueden usar de la siguiente forma:

return redirect('shop:product_detail', pk=product.id)

En este caso se indica que queremos volver a la página detalle del


producto y le pasamos el valor a la variable de dicha url.
Bibliografía
https://www.djangoproject.com/

https://developer.mozilla.org/es/docs/Learn/Server-side/Django/Introduction

https://www.w3schools.com/django/

https://github.com/django/django

También podría gustarte