es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo se implementan los espacios de nombres en Django?

He comenzado mi viaje con Django y realmente me encanta. Tengo una pregunta sobre los espacios de nombres que espero que alguien pueda ayudarme a entender por qué funciona de esa manera.

Entiendo que los espacios de nombres se utilizan para asegurarse de que si tienes dos páginas con el mismo nombre, la url y la función reverse apunten a la página correcta. He estado intentando implementar espacios de nombres en una aplicación de prueba que estoy escribiendo, pero no he podido hacerlo.

Aquí está lo que tengo hasta ahora (esto es sin espacios de nombres, ya que no he podido hacerlo funcionar).

Extracto de urls.py de la aplicación:

from django.urls import path, re_path
from . import views

urlpatterns = [
    path('', views.index, name="index"),
]

urls.py del proyecto:

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

urlpatterns = [
    path('admin/', admin.site.urls),
    path('accounts/', include('django.contrib.auth.urls')),
    path('index/', include('gallery.urls')),
]

Y por último, este es mi archivo view.py en la carpeta de mi aplicación:

from django.shortcuts import render
from django.urls import reverse

def index(request):
    return render(request, "gallery/index.html")

Cualquier ayuda será apreciada.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para implementar espacios de nombres en su aplicación Django, debe agregar un parámetro “namespace” al incluir las urls de su aplicación en el archivo urls.py principal.

    Así es como puede modificar su código para agregar un espacio de nombres:

    En su archivo urls.py de la aplicación:

    from django.urls import path
    from . import views
    
    app_name = 'gallery' # agregar la variable app_name para establecer el espacio de nombres
    
    urlpatterns = [
        path('', views.index, name="index"),
    ]
    

    En su archivo urls.py del proyecto:

    from django.contrib import admin
    from django.urls import path, include
    import gallery
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('accounts/', include('django.contrib.auth.urls')),
        path('gallery/', include('gallery.urls', namespace='gallery')), # agregar el parámetro namespace a include()
    ]
    

    Tenga en cuenta que establecemos el espacio de nombres como ‘gallery’ aquí, que coincide con la variable app_name establecida en el archivo urls.py de la aplicación.

    Ahora puede usar el espacio de nombres en la función reverse para revertir las urls de la aplicación:

    from django.urls import reverse
    
    url = reverse('gallery:index') # utilizar el formato 'namespace:nombre_url'
    
    # url = '/gallery/'
    

    Espero que esto aclare cómo implementar espacios de nombres en Django. ¡Buena suerte con su aplicación!

Comments are closed.