domingo, 7 de abril de 2024

Organizar mejor las URLs en django usando el método include

Anteriormente hemos ido incluyendo las rutas en el archivo urls.py de la carpeta principal donde esta nuestro proyecto que es mysite. Pero sucede que cuando aumente el número de APPs que tengamos y no solo esté myapp, se irán acumulando muchas rutas o URLs a las que queramos ir, por lo que es mejor que cada APP tenga su propio archivo conteniendo las URLs propias de esa APP.

Ahora tendremos un archivo urls.py en cada APP que tengamos, más el archivo urls.py de la carpeta principal del proyecto que es mysite. Veamos cómo quedan ambos ficheros.


mysite/urls.py

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

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('myapp.urls')),
]

Además de importar el método path importamos también el método include que es el que nos permite luego incluir las rutas que se indiquen include('myapp.urls')

Cuando colocamos un string vacío ('') en la línea path('', include('myapp.urls')) indica que antes de las urls a las que estamos haciendo referencia no va nada.

Si en lugar de poner un string vacío pusiera algo, por ejemplo 'home/' lo que sucedería es que ahora sería necesario poner esto para visitar las rutas que se referencian en myapp. Si hicieramos esto las rutas raiz y about serían así:

  • http://127.0.0.1:8000/home/
  • http://127.0.0.1:8000/home/about
En ese caso, si hubiéramos puesto 'home/' diríamos que esto es un prefijo y se debería añadir antes de las urls que importemos.

Nosotros en nuestro ejemplo, dejaremos el string vacío. Si bien, conviene entender que este prefijo puede ser útil para preceder la ruta de cada aplicación que tengamos para distinguirlas, por ejemplo, 'blog/' o 'tasks/' o 'store/', etc.

myapp/urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.hello),
    path('about/', views.about),
]

Escribimos el punto después de from para indicar que views está en el mismo directorio que en el que estamos que es myapp.

Podemos reestablecer el servidor y ver que las rutas raiz y about funcionan bien, igual que antes.

No hay comentarios:

Publicar un comentario