Proyecto de blog Django

Este capítulo te guía desde cero para crear un proyecto de blog con Django y comprender la estructura del proyecto y el ciclo de vida de las solicitudes.


Preparación del entorno

Django es un framework web de Python; primero debes verificar el entorno de Python.

Abre la terminal y comprueba la versión de Python (se requiere 3.8 o superior):

$ python3 --version
Python 3.12.0

Crear un entorno virtual e instalar Django

El entorno virtual es una práctica estándar en proyectos Python; permite que cada proyecto tenga dependencias independientes sin interferir entre sí.

$ python3 -m venv venv               # 创建虚拟环境
$ source venv/bin/activate           # 激活虚拟环境(Windows:venv\Scripts\activate)
(venv) $ pip install django          # 在虚拟环境中安装 Django

Verifica si la instalación se realizó correctamente:

(venv) $ python -m django --version
5.0

Cada vez que abras una nueva terminal, primero debes ejecutarsource venv/bin/activateActivar el entorno virtual. La parte delante del indicador de la terminal(venv)indica que actualmente estás en el entorno virtual.


Crear un proyecto Django

Django proporcionadjango-admin startprojectcomando para inicializar el proyecto.

(venv) $ django-admin startproject blog_project
(venv) $ cd blog_project

Después de ejecutarlo, se generará la siguiente estructura de directorios:

blog_project/
├── manage.py                    # 项目管理入口(启动服务器、执行迁移、创建 admin 等)
├── blog_project/                # 项目配置包
│   ├── __init__.py              # 标识这是一个 Python 包
│   ├── settings.py              # 全局配置(数据库、中间件、模板、静态文件等)
│   ├── urls.py                  # 根 URL 路由表
│   ├── wsgi.py                  # WSGI 部署入口(生产环境用)
│   └── asgi.py                  # ASGI 部署入口(WebSocket 用)

Iniciar el servidor de desarrollo

(venv) $ python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
Starting development server at http://127.0.0.1:8000/

Accede a http://127.0.0.1:8000/ en el navegador. Si ves la página de bienvenida de Django, el inicio fue exitoso.

El servidor de desarrollo tiene recarga automática: tras guardar cambios en el código, el servidor se reinicia solo. Pulsa Ctrl+C para detener el servidor.


Explicación de la configuración clave de settings.py

settings.pyEs el archivo de configuración central del proyecto Django; cada elemento de configuración tiene un significado claro.

Elemento de configuraciónValor predeterminadoFunción
DEBUGTrueModo de desarrollo (debe establecerse en False al publicar)
DATABASESSQLiteConfiguración de la base de datos (SQLite por defecto, sin instalación adicional)
INSTALLED_APPSLista de aplicaciones integradasAplicaciones registradas en el proyecto
TEMPLATESDjangoTemplatesConfiguración del motor de plantillas
LANGUAGE_CODE'en-us'Idioma (puedes cambiarlo a 'zh-hans')
TIME_ZONE'UTC'Zona horaria (puedes cambiarla a 'Asia/Shanghai')

Cambia el idioma y la zona horaria al entorno chino:

Ejemplo

# Ruta del archivo: blog_project/settings.py
LANGUAGE_CODE = 'zh-hans'      # La interfaz de administración se muestra en chino
TIME_ZONE = 'Asia/Shanghai'    # Zona horaria configurada como hora de Beijing

Crear la primera aplicación: blog

La organización de proyectos en Django es:El proyecto (Project) contiene múltiples aplicaciones (App)。

Cada App se encarga de un módulo funcional independiente (como blog, usuarios, comentarios).

(venv) $ python manage.py startapp blog

Después de ejecutarlo, se genera el directorio blog/:

blog/
├── __init__.py
├── admin.py       # 后台管理配置(第三章用到)
├── apps.py        # 应用配置
├── models.py      # 数据库模型(第二章用到)
├── views.py       # 视图函数(本章用到)
├── urls.py        # 需要手动创建(应用级路由)
└── migrations/    # 数据库迁移文件(第二章用到)

Después de crear la App, debes registrarla en settings.py:

Ejemplo

# Ruta del archivo: blog_project/settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',                      # Añadido: registrar la aplicación blog
]

Ciclo de vida de una solicitud en Django

Comprender el flujo de una solicitud en Django ayuda a localizar rápidamente problemas más adelante.

El navegador introduce la URL → urls.py hace coincidir la ruta → views.py procesa la lógica → templates renderiza el HTML → se devuelve al navegador。

Estos tres pasos (URL → View → Template) son el patrón básico del desarrollo en Django.


Manos a la obra: primera página Django

Primer paso: escribir la función de vista (views.py)

Ejemplo

# Ruta del archivo: blog/views.py
from django.shortcuts import render

# Función de vista: recibe request, devuelve response
def index(request):
    # La función render: combina request + plantilla + datos, devuelve una respuesta HTML
    return render(request, 'blog/index.html', {
        'welcome': 'Bienvenido al blog de EJEMPLO',
        'intro': 'Este es un sitio de exhibición de blog personal construido con Django.'
    })

Segundo paso: crear el archivo de plantilla (templates)

Crea dentro del directorio blog/templates/blog/subdirectorio, y luego creaindex.html。

Ejemplo

<!-- Ruta del archivo: blog/templates/blog/index.html -->
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Blog de EJEMPLO</title>
    <style>
        body { font-family: sans-serif; max-width: 800px; margin: 0 auto; padding: 40px 20px; }
        h1 { color: #2c3e50; }
    </style>
</head>
<body>
    <h1>{{ welcome }}</h1>
    <p>{{ intro }}</p>
</body>
</html>

Las variables de plantilla de Django usan{{ nombre de variable }}sintaxis, igual que las expresiones de interpolación de Vue3. Los datos del diccionario pasados a render en views.py se pueden usar directamente en la plantilla.

Tercer paso: configurar las rutas (urls.py)

Primero crea dentro de blog/urls.pycomo ruta a nivel de aplicación.

Ejemplo

# Ruta del archivo: blog/urls.py
from django.urls import path
from . import views

# Tabla de rutas de la aplicación
urlpatterns = [
    path('', views.index, name='index'),  # La ruta vacía coincide con / página de inicio
]

Luego, en el urls.py a nivel de proyecto, usainclude()para incluir las rutas de la aplicación:

Ejemplo

# Ruta del archivo: blog_project/urls.py
from django.contrib import admin
from django.urls import path, include          # Importar include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('blog.urls')),            # Conectar las rutas de la aplicación blog a la ruta raíz
]

Resumen del capítulo

En este capítulo completaste tres cosas: crear un entorno virtual e instalar Django, inicializar el proyecto con startproject/startapp y escribir la cadena completa View → Template → URL.

Conclusiones clave: comprender la estructura jerárquica proyecto/aplicación de Django y dominar el patrón de desarrollo en tres pasos URL → View → Template.

Otras extensiones