Django utiliza un sistema basado en patrones para definir las rutas de las aplicaciones web.
Estas rutas se configuran en archivos llamados urls.py y permiten enlazar las URLs con las vistas.
En Django, las rutas se definen en el archivo urls.py.
La función principal utilizada es path, y opcionalmente, re_path para expresiones regulares.
from django.urls import path
from . import views
urlpatterns = [
path('ruta/', views.mi_vista, name='nombre_de_la_ruta'),
] ruta/: Define el patrón de la URL.views.mi_vista: Especifica la vista que se ejecutará cuando se acceda a esta URL.name: Permite referenciar la ruta en plantillas o vistas.urls.py en tu aplicación (si no existe).from django.urls import path
from . import views
urlpatterns = [
path('', views.inicio, name='inicio'),
path('about/', views.about, name='about'),
] Incluye las rutas locales en el proyecto principal.
En el archivo urls.py del proyecto:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('mi_app.urls')),
] urlpatterns = [
path('saludo/', views.saludo, name='saludo'),
] from django.http import HttpResponse
def saludo(request):
return HttpResponse("¡Hola, Mundo!") urlpatterns = [
path('saludo/<str:nombre>/', views.saludo_personalizado, name='saludo_personalizado'),
] def saludo_personalizado(request, nombre):
return HttpResponse(f"¡Hola, {nombre}!") Usando re_path:
from django.urls import re_path
urlpatterns = [
re_path(r'^numero/(?P<numero>[0-9]+)/$', views.mostrar_numero, name='mostrar_numero'),
] def mostrar_numero(request, numero):
return HttpResponse(f"El número es: {numero}") Cuando tienes varias rutas relacionadas:
urlpatterns = [
path('blog/', views.blog_list, name='blog_list'),
path('blog/<int:id>/', views.blog_detail, name='blog_detail'),
] def blog_list(request):
return HttpResponse("Lista de publicaciones.")
def blog_detail(request, id):
return HttpResponse(f"Detalles de la publicación con ID: {id}") path y re_pathEjemplo combinado:
from django.urls import path, re_path
urlpatterns = [
path('simple/', views.simple, name='simple'),
re_path(r'^regex/(?P<slug>[-w]+)/$', views.regex_example, name='regex_example'),
]