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/Directorio | Función |
|---|---|
manage.py | Punto 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.sqlite3 | Archivo 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/Directorio | Función |
|---|---|
__init__.py | Archivo vacío que indica a Python que este directorio es un paquete. |
settings.py | Archivo 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.py | Archivo de configuración principal de rutas, define la relación de mapeo entre las rutas URL y las vistas. |
asgi.py | Configuración del servidor ASGI (para servidores web asíncronos, como Daphne). |
wsgi.py | Configuració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
# 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
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
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:
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:
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:
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