Actualmente estoy probando Django. Utilizo el namespace
argumento en uno de mis include()
s en urls.py. Cuando ejecuto el servidor e intento navegar, aparece este error.
File "C:\Users\User\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\urls\conf.py", line 39, in include
'Specifying a namespace in include() without providing an app_name '
django.core.exceptions.ImproperlyConfigured: Specifying a namespace in include() without providing an app_name is not supported. Set the app_name attribute in the included module, or pass a 2-tuple containing the list of patterns and app_name instead.
Estos son mis archivos urls.py:
#project/urls.py
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^reviews/', include('reviews.urls', namespace='reviews')),
url(r'^admin/', include(admin.site.urls)),
]
y
#app/urls.py
from django.conf.urls import url
from . import views
urlpatterns = [
# ex: /
url(r'^$', views.review_list, name='review_list'),
# ex: /review/5/
url(r'^review/(?P<review_id>[0-9]+)/$', views.review_detail, name='review_detail'),
# ex: /wine/
url(r'^wine$', views.wine_list, name='wine_list'),
# ex: /wine/5/
url(r'^wine/(?P<wine_id>[0-9]+)/$', views.wine_detail, name='wine_detail'),
]
¿Qué paso app_name
como se indica en el mensaje de error?
python
django
django-urls
Nelson M
fuente
fuente
reviews.url
para tener unaapp_name
variable endjango 2.1
.path("the_app/", include(("app.urls", <name>), namespace=<the same name>))
y es bastante molesto.Django 1.11+, 2.0+
Debe establecer el nombre de la aplicación en el archivo de URL que está incluyendo
Entonces puede incluirlo de la forma en que lo está haciendo.
Además, podría valer la pena señalar lo que dicen los documentos de Django aquí https://docs.djangoproject.com/en/1.11/ref/urls/#include :
( https://docs.djangoproject.com/en/1.11/topics/http/urls/#namespaces-and-include )
fuente
Django 2.0 debe especificar app_name en su urls.py , no es necesario especificar el argumento app_name en incluir.
Archivo de URL principal.
URL incluida
Luego use usar en la plantilla como
Más detalles: https://code.djangoproject.com/ticket/28691 Django 2.0 Docs
fuente
Incluí una biblioteca que aún no es (totalmente) compatible con django 2.1 (django_auth_pro_saml2). Por lo tanto, creo un segundo archivo
saml_urls.py
:De modo que podría incluir las URL como:
Hacky, pero funcionó para mí, mientras que el
url(r'^reviews/', include(('reviews.urls', 'reviews'), namespace='reviews'))
no.fuente
También me enfrento al mismo error en Django 2.2 y lo resuelvo de esta manera
archivo urls.py
archivo polls / urls.py
ejemplo de uso del espacio de nombres en el método de vista basado en calss
ejemplo de uso de espacio de nombres en plantillas
Aquí polls: index mean app_name [define in polls / urls.py file ]: name [define in polls / urls.py file inside path function]
su oficial, que es bastante bueno, puedes consultar más información namespace_django_official_doc
fuente
En mi caso, estaba escribiendo las URL fuera de la lista de patrones de URL. Revisa otra vez, por favor.
fuente