0% encontró este documento útil (0 votos)
3 vistas16 páginas

Django

Django es un framework web de alto nivel para Python que facilita el desarrollo rápido de aplicaciones web seguras y mantenibles, utilizando una arquitectura basada en el patrón Modelo-Vista-Plantilla (MVT). Ofrece características como un ORM robusto, administración automática, autenticación integrada y escalabilidad, permitiendo crear aplicaciones desde pequeñas hasta grandes. La instalación y configuración de un proyecto Django incluye la creación de un entorno virtual, la instalación del framework, y la configuración de modelos, vistas y rutas para gestionar la lógica de la aplicación.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
3 vistas16 páginas

Django

Django es un framework web de alto nivel para Python que facilita el desarrollo rápido de aplicaciones web seguras y mantenibles, utilizando una arquitectura basada en el patrón Modelo-Vista-Plantilla (MVT). Ofrece características como un ORM robusto, administración automática, autenticación integrada y escalabilidad, permitiendo crear aplicaciones desde pequeñas hasta grandes. La instalación y configuración de un proyecto Django incluye la creación de un entorno virtual, la instalación del framework, y la configuración de modelos, vistas y rutas para gestionar la lógica de la aplicación.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Django

Es un framework web de alto nivel para Python, diseñado para facilitar el desarrollo rápido de sitios
web seguros y mantenibles. Ideal para proyectos pequeños o grandes. Su arquitectura se basa en el
patrón Modelo-Vista-Plantilla (MVT), que es similar al patrón Modelo-Vista-Controlador (MVC),
pero con diferencias clave.

• Modelo (Model) - Modelo MVC: Lógica de datos y estructura de base de datos


• Vista (View) - Controlador MVC: Lógica de negocio, respuestas HTTP, conexión Model-Template
• Plantilla (Template) - Vista MVC: Presentación, HTML renderizado

Aplicaciones web escalables

• Arquitectura modular y reutilizable.


• ORM robusto (Object-Relational Mapping).
• Admin automático para gestión de datos.
• Sistema de rutas limpio y poderoso.
• Autenticación integrada.
• Internacionalización, seguridad, escalabilidad y más, listo para producción.

Instalación de Django

Crear entorno virtual (opcional pero recomendado), donde un entorno virtual es una carpeta aislada
donde instalas paquetes de Python solo para ese proyecto, sin afectar el Python ni los paquetes
instalados globalmente en su sistema. Todos los paquetes que se instales se instalarán dentro de
env, no en todo tu sistema. Permite: Tener versiones específicas de librerías en cada proyecto, evitar
conflictos entre proyectos diferentes y mantener tu sistema limpio y ordenado.

python -m venv env

• python: llama al ejecutable de Python que tengas configurado


• -m venv: le dice a Python que use el módulo venv
• env: es el nombre de la carpeta donde se creará el entorno virtual. Puedes ponerle cualquier
nombre.

Se debe activar el entorno para usarlo:

Bash: source env/Scripts/activate

Windows: .\env\Scripts\activate

Linux/Mac: source env/bin/activate


Para desactivar el entorno: deactivate

Instalar Django

pip install django

Verificar versión instalada

django-admin --version

CREAR PROYECTO DJANGO

Crear proyecto

django-admin startproject mi_proyecto

Entrar a la carpeta y correr el servidor

cd mi_proyecto

python [Link] runserver

Acceder al navegador:

[Link]

CREAR Y CONFIGURAR UNA APLICACIÓN

Crear una app

python [Link] startapp tienda

Registrar la app en [Link], mi_proyecto/[Link]

INSTALLED_APPS = [

'[Link]',

'tienda',

Configuración básica

• INSTALLED_APPS: Agrega tu app al archivo [Link].


• DATABASES: Define el motor y credenciales de la base de datos.
• TEMPLATES: Configura la ruta a tus plantillas HTML.
• STATICFILES: Configura los recursos estáticos (CSS, JS, imágenes).
Funcionalidad Descripción
Admin automático CRUD para tus modelos sin escribir código extra
ORM Consultas a base de datos con sintaxis Python
Formularios Validación, seguridad y generación automática de campos
Middleware Lógica que se ejecuta antes o después de una petición
Seguridad Protección CSRF, XSS, inyecciones SQL, sesiones seguras
Migraciones Control de cambios en la base de datos
Autenticación Gestión de usuarios, login/logout, permisos

Escalabilidad en Django

• Usa caché (Redis/Memcached) para alto rendimiento.


• Implementa bases de datos separadas por servicios (bases distribuidas).
• Usa Docker y Kubernetes para despliegue en la nube.
• Separación clara entre frontend (SPA) y backend (API REST con DRF).

MODELOS (MODELS)

Representa la estructura de datos y se comunica con la base de datos. Este modelo crea
automáticamente una tabla en la base de datos y gestiona CRUD (Create, Read, Update, Delete).

Crear modelo

tienda/[Link]

from [Link] import models

class Producto([Link]):

nombre = [Link](max_length=100)

precio = [Link](max_digits=8, decimal_places=2)

disponible = [Link](default=True)

Crear y aplicar migraciones

Crear archivo de migración

python [Link] makemigrations

Aplicar migraciones a la base de datos

python [Link] migrate


ADMINISTRADOR DE DJANGO

Crear superusuario

python [Link] createsuperuser

tienda/[Link]

from .models import Producto

from [Link] import admin

[Link](Producto)

Admin:

[Link]

VISTAS (VIEWS) Y RUTAS (URLS)

Controla la lógica de negocio y respuesta a peticiones del usuario. La vista obtiene los datos y se los
pasa a una plantilla para ser mostrados.

from [Link] import render

from .models import Producto

def lista_productos(request):

productos = [Link]()

return render(request, '[Link]', {'productos': productos})

Vista simple

tienda/[Link]

from [Link] import HttpResponse

def inicio(request):

return HttpResponse("¡Bienvenido a la tienda!")

Enlazar URL

tienda/[Link]
from [Link] import path

from . import views

urlpatterns = [

path('', [Link], name='inicio'),

mi_proyecto/[Link]

Asocia las URLs con las vistas. Define qué función se ejecuta cuando el usuario accede a cierta URL.

from [Link] import admin

from [Link] import path, include

urlpatterns = [

path('admin/', [Link]),

path('', include('[Link]')),

path('productos/', views.lista_productos, name='lista_productos'),

TEMPLATES (PLANTILLAS)

Responsable de la presentación de datos (HTML + Django Template Language). Usa etiquetas de


plantilla de Django ({{ }} y {% %}) para insertar datos y lógica en HTML. Django usa su propio sistema
de plantillas inspirado en Jinja2, pero no es exactamente Jinja2.

templates/[Link]

<h1>Lista de productos</h1>

<ul>

{% for producto in productos %}

<li>{{ [Link] }} - ${{ [Link] }}</li>

{% endfor %}

</ul>
Estructura de un proyecto

mi_proyecto/

├ [Link]

├ mi_app/

│ ├ [Link]

│ ├ [Link]

│ ├ [Link]

│ └── templates/

│ └── [Link]

├ mi_proyecto/

│ ├ [Link]

│ ├ [Link]

│ └── [Link] / [Link]

Estructura de carpetas simple

tienda/

├ templates/

│ └── tienda/

│ └── [Link]

tienda/templates/tienda/[Link]

<h1>Productos disponibles</h1>

tienda/[Link]

from [Link] import render

def inicio(request):

return render(request, 'tienda/[Link]')


CONSULTAR DATOS DE MODELOS

[Link]

from .models import Producto

def inicio(request):

productos = [Link]()

return render(request, 'tienda/[Link]', {'productos': productos})

[Link]

<ul>

{% for producto in productos %}

<li>{{ [Link] }} - ${{ [Link] }}</li>

{% endfor %}

</ul>

FORMULARIOS Y CREACIÓN DE DATOS

Crear formulario

tienda/[Link]

from django import forms

from .models import Producto

class ProductoForm([Link]):

class Meta:

model = Producto

fields = '__all__'

Vista para crear

[Link]
from .forms import ProductoForm

def agregar_producto(request):

if [Link] == 'POST':

form = ProductoForm([Link])

if form.is_valid():

[Link]()

else:

form = ProductoForm()

return render(request, 'tienda/[Link]', {'form': form})

AUTENTICACIÓN Y PERMISOS

• Login, logout
• Decoradores @login_required
• Manejo de sesiones
• Sistema de usuarios

ARCHIVOS ESTÁTICOS Y MEDIA

• STATICFILES_DIRS → CSS, JS, imágenes.


• MEDIA_URL y MEDIA_ROOT → Archivos subidos por usuario.

DEPLOY A PRODUCCIÓN

• Configurar [Link] para producción.


• Usar gunicorn, nginx, Docker, AWS/Heroku.

API REST CON DJANGO REST FRAMEWORK (DRF)

• Serializers
• ViewSets
• Routers automáticos
• Autenticación Token
• Permisos
Ejemplo Django

Crear entorno virtual

python -m venv env

Activar el entorno

source env/Scripts/activate

Instalar Django

pip install django

Verificar versión instalada

django-admin --version

Crear proyecto y app

django-admin startproject misproductos

Django genera dos carpetas con el mismo nombre. misproductos externo es la carpeta raíz del
proyecto. Es donde se inicia el proyecto y se pueden agregar apps, archivos estáticos, etc.

[Link]

Archivo principal para ejecutar comandos de Django desde la terminal. Internamente se configura
la variable DJANGO_SETTINGS_MODULE para que Django sepa qué configuración usar.

python [Link] runserver

python [Link] startapp productos

python [Link] migrate


misproductos interno

Es el paquete de configuración del proyecto Django. Contiene los archivos que controlan el
comportamiento global del proyecto.

__init__.py

Archivo vacío que marca esta carpeta como un paquete de Python. Necesario para poder importar
desde otros archivos. Por ejemplo, permite que Django importe el paquete de configuración del
proyecto. Es requerido para que la carpeta interna del proyecto (como misproductos/) sea tratada
como parte del sistema de módulos de Python.

[Link]

Contiene toda la configuración del proyecto, es el corazón de la configuración de Django.

• Aplicaciones instaladas (INSTALLED_APPS)


• Bases de datos
• Archivos estáticos
• Seguridad
• Middleware
• Lenguaje, zona horaria, etc.

[Link]

Define las rutas del proyecto, es decir, cómo se conectan las URLs con las vistas (views). Puedes
incluir rutas de apps con include() también.

from [Link] import path

from . import views

urlpatterns = [

path('', [Link]),

[Link]

Archivo para desplegar el proyecto en servidores WSGI (como Gunicorn o uWSGI). WSGI (Web
Server Gateway Interface) es un estándar que permite a servidores web comunicarse con
aplicaciones Python. Este archivo expone la aplicación Django como una variable llamada
application.
[Link]

Igual que [Link] pero para ASGI (Asynchronous Server Gateway Interface), que permite trabajar
con: WebSockets, Tareas asíncronas. Es usado en despliegues modernos con servidores como
Daphne o Uvicorn.

Entra a la carpeta

cd misproductos

crea una app

python [Link] startapp tienda

tienda/

├ __init__.py

├ [Link]

├ [Link]

├ migrations/

│ └── __init__.py

├ [Link]

├ [Link]

├ [Link]

__init__.py

Archivo vacío que marca tienda/ como un paquete de Python y permite que Python y Django
importen esta app.

[Link]

Registras los modelos para que aparezcan en el panel de administración (/admin).

[Link]

Define la configuración de la app. Django genera una clase automáticamente. Por si luego se
quiere cambiar el nombre visible o algunas configuraciones de la app.
migrations/

Carpeta especial donde Django guardará los archivos de migraciones. Una migración es un archivo
que representa un cambio en tu base de datos (crear tablas, cambiar campos, etc.).

[Link]

Define los modelos de la app, es decir, las estructuras de datos (tablas de la base de datos). Luego
Django crea la tabla automáticamente en la base de datos.

[Link]

Archivo para escribir pruebas automáticas de la app. Sirve para asegurarte de que su código
funciona correctamente cada vez que haces cambios.

[Link]

Se define las vistas: funciones o clases que responden a solicitudes web.

Registrar la app en productos_csv/[Link]

INSTALLED_APPS = [

...

'tienda',

tienda/[Link]

id,nombre,precio

1,producto1,1000

2,producto2,2000

3,producto3,3000

4,producto4,4000

5,producto5,5000
tienda/[Link]

import csv

import os

from [Link] import render

from [Link] import settings

def mostrar_productos(request):

ruta_csv = [Link](settings.BASE_DIR, 'tienda', '[Link]')

productos = []

with open(ruta_csv, newline='', encoding='utf-8') as archivo:

lector = [Link](archivo)

for fila in lector:

[Link]({

'id': fila['id'],

'nombre': fila['nombre'],

'precio': fila['precio'],

})

return render(request, 'tienda/[Link]', {'productos': productos})

tienda/templates/tienda/[Link]

<!DOCTYPE html>

<html lang="es">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Productos</title>

</head>
<body>

<h1>Productos</h1>

<table border="1" cellpadding="10">

<thead>

<tr>

<th>ID</th>

<th>Nombre</th>

<th>Precio</th>

</tr>

</thead>

<tbody>

{% for producto in productos %}

<tr>

<td>{{ [Link] }}</td>

<td>{{ [Link] }}</td>

<td>{{ [Link] }}</td>

</tr>

{% endfor %}

</tbody>

</table>

</body> </html>

tienda/[Link]

from [Link] import path

from . import views

urlpatterns = [

path('', views.mostrar_productos, name='productos'),

]
productos_csv/[Link]

from [Link] import admin

from [Link] import path, include

urlpatterns = [

path('admin/', [Link]),

path('', include('[Link]')),

Estructura

productos_csv/

├ [Link]

├ productos_csv/

│ ├ __init__.py

│ ├ [Link]

│ ├ [Link]

│ └── [Link]

├ tienda/

│ ├ __init__.py

│ ├ [Link]

│ ├ [Link]

│ ├ templates/

│ │ └── tienda/

│ │ └── [Link]

│ └── [Link]
Ejecutar servidor

python [Link] runserver

Visitar y ver la tabla con los productos

[Link]

Migraciones pendientes.

python [Link] migrate

Esto aplicará todas las migraciones pendientes y tu proyecto quedará sincronizado. Migraciones son
cambios en la estructura de la base de datos (tablas nuevas, modificaciones, etc.). Principalmente
para las apps internas de Django (admin, auth, sessions, contenttypes).

También podría gustarte