Django es un framework de desarrollo web en Python que permite construir aplicaciones de manera rápida y segura. Su arquitectura basada en el patrón MVT (Modelo-Vista-Template) facilita la organización del código y su mantenimiento.
En esta guía aprenderás a crear tu primer proyecto en Django paso a paso.
Antes de comenzar, asegúrate de tener instalado:
- Python 3.8 o superior (
python --version). - pip, el gestor de paquetes de Python (
pip --version). - Un entorno virtual para aislar dependencias.
Para instalar Django, ejecuta:
pip install django
Verifica la instalación:
django-admin --version
Crea un nuevo proyecto:
django-admin startproject mi_proyecto
Estructura generada:
mi_proyecto/
│
├── manage.py
└── mi_proyecto/
├── __init__.py
├── settings.py
├── urls.py
├── asgi.py
└── wsgi.py
Arranca el servidor:
cd mi_proyecto
python manage.py runserver
Si ves el mensaje de que corre en http://127.0.0.1:8000/, ¡todo OK!
Las apps son módulos independientes dentro del proyecto. Crea blog:
python manage.py startapp blog
Estructura de la app:
blog/
├── __init__.py
├── admin.py
├── apps.py
├── models.py
├── tests.py
└── views.py
Añade 'blog' a INSTALLED_APPS en settings.py:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
]
Crea el modelo Post en blog/models.py:
from django.db import models
class Post(models.Model):
titulo = models.CharField(max_length=200)
contenido = models.TextField()
fecha_publicacion = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.titulo
Aplica los cambios en la base de datos:
python manage.py makemigrations
python manage.py migrate
Para acceder al admin:
python manage.py createsuperuser
Luego entra en /admin/.
En blog/admin.py:
from django.contrib import admin
from .models import Post
admin.site.register(Post)
En blog/views.py:
from django.shortcuts import render
from .models import Post
def lista_posts(request):
posts = Post.objects.all()
return render(request, 'blog/lista_posts.html', {'posts': posts})
En urls.py del proyecto:
from django.urls import path
from blog.views import lista_posts
urlpatterns = [
path('posts/', lista_posts, name='lista_posts'),
]
Crea blog/templates/blog/lista_posts.html:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Lista de Posts</title>
</head>
<body>
<h1>Lista de Posts</h1>
<ul>
{% for post in posts %}
<li><strong>{{ post.titulo }}</strong> — {{ post.fecha_publicacion }}</li>
{% endfor %}
</ul>
</body>
</html>
Levanta el servidor de nuevo y visita la ruta de la lista:
python manage.py runserver
Con esto has construido tu primer proyecto Django con una app funcional: modelos, vistas, URLs, plantillas y administración.
Desde aquí puedes sumar autenticación, formularios, archivos estáticos y más. ¡Sigue iterando!