J'ai du mal à comprendre le lien entre app_name et namespace.
considérer le niveau du projet urls.py
from django.urls import path, include
urlpatterns = [
path('blog/', include('blog.urls', namespace='blog')),
]
considérer le niveau de l'application (blog) urls.py
from django.urls import path
from . import views
app_name = 'blog'
urlpatterns = [
path('', views.post_list, name='post_list'),
path('<int:year>/<int:month>/<int:day>/<slug:post>/', views.post_detail, name='post_detail'),
]
si je commente app_name, j'obtiens ce qui suit.
'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.
Si je renomme app_name en une chaîne arbitraire, je n'obtiens pas d'erreur.
app_name = 'x'
J'ai lu la documentation mais ça ne marche toujours pas. Quelqu'un peut-il me dire comment/pourquoi le nom de l'application et l'espace de noms sont liés et pourquoi ils sont autorisés à avoir des valeurs de chaîne différentes ? La définition manuelle du nom de l'application n'est-elle pas superflue ?