Django: creando el primer proyecto

En este capítulo presentaremos las herramientas de administración de Django y cómo usar Django para crear proyectos. Para el primer proyecto, nombraremos el proyecto como HelloWorld.

Notas sobre la versión de prueba:

  • Python 3.9.7

  • Django 4.2.7

Puede ver el número de versión con el siguiente comando:

# python3 -V
Python 3.9.7
# python3 -m django --version
4.2.7

Herramientas de administración de Django

Después de instalar Django, ya debería tener las herramientas de administración disponiblesdjango-admin, si no ha configurado las variables de entorno en Windows, puede usardjango-admin。

Veamos la introducción a los comandos de django-admin:

$ django-admin

Type 'django-admin help <subcommand>' for help on a specific subcommand.

Available subcommands:

[django]
    check
    compilemessages
    createcachetable
    dbshell
    diffsettings
    dumpdata
    flush
    inspectdb
    loaddata
    makemessages
    makemigrations
    migrate
    runserver
    sendtestemail
    shell
    showmigrations
    sqlflush
    sqlmigrate
    sqlsequencereset
    squashmigrations
    startapp
    startproject
    test
    testserver
……省略部分……

Crear el primer proyecto

Use django-admin para crear el proyecto HelloWorld:

django-admin startproject HelloWorld

Después de la creación, podemos ver la estructura de directorios del proyecto:

$ cd HelloWorld/
$ tree
HelloWorld/                  # 项目根目录
├── manage.py                # 项目管理脚本
├── db.sqlite3               # SQLite 数据库文件
├── __pycache__/             # Python 字节码缓存
└── HelloWorld/              # 项目配置目录(与项目同名)
    ├── __init__.py          # 包标识文件
    ├── settings.py          # 项目设置
    ├── urls.py             # 主路由配置
    ├── asgi.py             # ASGI 配置
    └── wsgi.py             # WSGI 配置

Directorio raíz del proyecto (HelloWorld/):

Archivo/DirectorioFunción
manage.pyPunto de entrada de la herramienta de línea de comandos de Django, utilizada para ejecutar el servidor de desarrollo, migraciones de base de datos, etc.
db.sqlite3Archivo de base de datos SQLite (base de datos predeterminada, utilizada en el entorno de desarrollo).
__pycache__/Directorio de caché de código de bytes de Python (se genera automáticamente, no es necesario modificarlo manualmente).

Directorio de configuración principal del proyecto (HelloWorld/HelloWorld/):

Archivo/DirectorioFunción
__init__.pyArchivo vacío que indica a Python que este directorio es un paquete.
settings.pyArchivo de configuración principal, que contiene:
- Configuración de la base de datos (DATABASES)
- Ruta de archivos estáticos (STATIC_URL)
- Registro de aplicaciones (INSTALLED_APPS)
- Modo de depuración (DEBUG=True/False)
urls.pyArchivo de configuración principal de rutas, define la relación de mapeo entre las rutas URL y las vistas.
asgi.pyConfiguración del servidor ASGI (para servidores web asíncronos, como Daphne).
wsgi.pyConfiguración del servidor WSGI (para servidores web tradicionales, como Gunicorn, uWSGI).

A continuación, entramos en el directorio HelloWorld e introducimos el siguiente comando para iniciar el servidor:

python3 manage.py runserver 0.0.0.0:8000

0.0.0.0 permite que otras computadoras puedan conectarse al servidor de desarrollo; 8000 es el número de puerto. Si no se especifica, el puerto por defecto es 8000.

En el navegador, introduzca la IP de su servidor (aquí introducimos la dirección IP local:127.0.0.1:8000) y el número de puerto. Si se inicia correctamente, el resultado se muestra a continuación:

Explicación detallada de los archivos clave

1. settings.py (configuración principal)

Ejemplo

# Fragmento de ejemplo de HelloWorld/settings.py

# Advertencia de seguridad: ¡DEBUG debe estar desactivado en producción!
DEBUG = True

# Dominios permitidos para acceder (deben configurarse cuando DEBUG=False)
ALLOWED_HOSTS = []

# Aplicaciones de Django registradas
INSTALLED_APPS = [
    'django.contrib.admin',  # Panel de administración
    'django.contrib.auth',   # Sistema de autenticación
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',  # Manejo de archivos estáticos
]

# Configuración de la base de datos (SQLite por defecto)
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',  # Ruta del archivo de base de datos
    }
}

# URL de archivos estáticos (CSS/JS/imágenes)
STATIC_URL = 'static/'

2. urls.py (configuración de rutas)

Ejemplo

# Ejemplo de HelloWorld/urls.py

from django.contrib import admin
from django.urls import path

urlpatterns = [
    path('admin/', admin.site.urls),  # Ruta de administración del panel
    # Aquí se pueden añadir rutas personalizadas, como:
    # path('blog/', include('blog.urls')),
]

3. manage.py (script de gestión del proyecto)

Ejemplo

#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "HelloWorld.settings")
    from django.core.management import execute_from_command_line
    execute_from_command_line(sys.argv)

Vistas y configuración de URL

En el directorio HelloWorld, dentro del directorio HelloWorld creado anteriormente, cree un nuevo archivo views.py e introduzca el código:

Código del archivo HelloWorld/HelloWorld/views.py:

from django.http import HttpResponse def hello(request): return HttpResponse("Hello world ! ")

A continuación, vincule las URL con las funciones de vista. Abra el archivo urls.py, elimine el código original y copie y pegue el siguiente código en el archivo urls.py:

Código del archivo HelloWorld/HelloWorld/urls.py:

from django.urls import path from . import views urlpatterns = [ path("", views.hello, name="hello"), ]

La estructura completa del directorio es la siguiente:

$ tree
.
|-- HelloWorld
|   |-- __init__.py
|   |-- __init__.pyc
|   |-- settings.py
|   |-- settings.pyc
|   |-- urls.py              # url 配置
|   |-- urls.pyc
|   |-- views.py              # 添加的视图文件
|   |-- views.pyc             # 编译后的视图文件
|   |-- wsgi.py
|   `-- wsgi.pyc
`-- manage.py

Una vez completado, inicie el servidor de desarrollo de Django y acceda a él desde el navegador:

También podemos modificar las siguientes reglas:

Código del archivo HelloWorld/HelloWorld/urls.py:

from django.urls import path from . import views urlpatterns = [ path('hello/', views.hello), ]

Abra en el navegadorhttp://127.0.0.1:8000/hello, el resultado se muestra a continuación:

Nota:Si el código del proyecto tiene cambios, el servidor detectará automáticamente las modificaciones y se recargará automáticamente, por lo que si ya ha iniciado el servidor no es necesario reiniciarlo manualmente.


La función path()

La función path() de Django puede recibir cuatro parámetros: dos parámetros obligatorios, route y view, y dos parámetros opcionales, kwargs y name.

Formato de sintaxis:
path(route, view, kwargs=None, name=None)
  • route:Una cadena que define la parte de la ruta de la URL. Puede contener variables, por ejemplo<int:my_variable>, para capturar parámetros de la URL y pasarlos a la función de vista.

  • view:Función de vista que maneja las solicitudes que coinciden con la ruta dada. Puede ser una función o una vista basada en clases.

  • kwargs (opcional):Un diccionario que contiene parámetros de palabras clave adicionales para pasar a la función de vista.

  • name (opcional):Asigna un nombre único a la ruta URL para poder hacer referencia a ella en otras partes del código. Esto es muy útil para generar URL en plantillas o realizar redireccionamientos en el código.

En Django 2.0 se puede usar el método re_path() para ser compatible con elurl()método de la versión 1.x. Algunas reglas de expresiones regulares también se pueden implementar con re_path().

from django.urls import include, re_path

urlpatterns = [
    re_path(r'^index/$', views.index, name='index'),
    re_path(r'^bio/(?P<username>\w+)/$', views.bio, name='bio'),
    re_path(r'^weblog/', include('blog.urls')),
    ...
]
Otras extensiones