Ejemplos de Django
www.onlinetis.com
Django es un framework de desarrollo web de alto nivel, escrito en Python, que promueve un diseño limpio y pragmático. Sigue el patrón MVT (Modelo-Vista-Plantilla), similar al MVC. Aquí te presento ejemplos de los componentes principales de Django.
1. Modelos (Models)
Los modelos de Django son clases que definen la estructura de tu base de datos. Utilizan el ORM (Object-Relational Mapper) de Django, lo que te permite interactuar con la base de datos usando objetos de Python en lugar de SQL.
blog/models.py
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
published_date = models.DateTimeField(auto_now_add=True)
author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
def __str__(self):
return self.title
CharField
: Se utiliza para campos de texto de longitud corta.TextField
: Se utiliza para campos de texto largos.DateTimeField
: Para fechas y horas.auto_now_add=True
establece automáticamente la fecha y hora de creación.ForeignKey
: Define una relación de "uno a muchos", en este caso, unPost
pertenece a unUser
.
Para crear esta tabla en la base de datos, ejecutarías los comandos python manage.py makemigrations
y python manage.py migrate
.
2. Vistas (Views)
Las vistas son funciones o clases que manejan las peticiones HTTP y devuelven una respuesta. La respuesta puede ser una página web, un JSON o un redireccionamiento.
blog/views.py
from django.shortcuts import render, get_object_or_404
from .models import Post
def post_list(request):
posts = Post.objects.all().order_by('-published_date')
return render(request, 'blog/post_list.html', {'posts': posts})
def post_detail(request, pk):
post = get_object_or_404(Post, pk=pk)
return render(request, 'blog/post_detail.html', {'post': post})
post_list
: Recupera todos los posts de la base de datos, los ordena por fecha y los pasa a una plantilla HTML.post_detail
: Recupera un post específico por su clave primaria (pk
) y lo pasa a otra plantilla. Si no encuentra el post, devuelve un error 404.
3. Rutas (URLs)
Las rutas dirigen las peticiones HTTP a las vistas adecuadas. El archivo urls.py
define qué URL debe ser manejada por qué vista.
blog/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.post_list, name='post_list'),
path('post/<int:pk>/', views.post_detail, name='post_detail'),
]
path('', ...)
: Asigna la URL raíz de la aplicación a la vistapost_list
.path('post/<int:pk>/', ...)
: Asigna una URL que contiene un número entero (la clave primaria del post) a la vistapost_detail
.
4. Plantillas (Templates)
Las plantillas son archivos HTML con sintaxis de Django que permiten mostrar datos dinámicos.
blog/templates/blog/post_list.html
<!DOCTYPE html>
<html lang="es">
<head>
<title>Mi Blog</title>
</head>
<body>
<h1>Artículos del Blog</h1>
{% for post in posts %}
<article>
<h2><a href="{% url 'post_detail' pk=post.pk %}">{{ post.title }}</a></h2>
<p>{{ post.content|truncatechars:200 }}</p>
<p>Publicado por {{ post.author }} el {{ post.published_date }}</p>
</article>
{% endfor %}
</body>
</html>
{% for post in posts %}
: Sintaxis del lenguaje de plantillas de Django para iterar sobre una lista de objetos.{{ post.title }}
: Muestra el valor del atributotitle
del objetopost
.{% url 'post_detail' pk=post.pk %}
: Genera dinámicamente la URL para el detalle de un post.|truncatechars:200
: Es un filtro que recorta el contenido a 200 caracteres.