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

Python
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, un Post pertenece a un User.

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

Python
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

Python
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 vista post_list.

  • path('post/<int:pk>/', ...): Asigna una URL que contiene un número entero (la clave primaria del post) a la vista post_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

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 atributo title del objeto post.

  • {% 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.

Entradas populares de este blog

Ciberseguridad y hacking con Whatweb

Como robar contraseñas haciendo un phishing web

Arsenal software hacking NFC