У меня есть сайт, на котором я работаю, где мне нужно сопоставить параметр в начале URL: test.com/the-data-slug
Что странно, я не могу понять, почему следующее код не работает Это совсем не совпадает.
path('<slug:data-slug>/', DataLandingView.as_view(), name="data_landing")
Я получил следующее на работу, но я знаю, что путь предпочтительнее, чем re_path.
re_path(r'^(?P<data-slug>\w+)/$', DataLandingView.as_view(), name="data_landing")
Мне действительно любопытно, что я я делаю что-то неправильно с вызовом пути, или это просто то, что путь не может сделать?
Обновление: Запрошено у комментаторов. Из urls.py это единственные используемые шаблоны URL.
urlpatterns = [
# Special Project level routing. Specifically routes to handle login/logout admin
path('admin/', admin.site.urls),
path('users/', include('django.contrib.auth.urls')),
path('accounts/', include('allauth.urls')),
# We are handling all convention level routing here as it makes more
# sence here as a master control router than in the individual projects
# Global Stuff for buisness
path('', HomePageView.as_view(), name='home'),
path('about/', AboutPageView.as_view(), name='about'),
# If we don't recoginze from the above we step down to the next layer
path('<slug:data-slug>', CLandingView.as_view(), name="c_landing")
]
Переход к http://127.0.0.1: 8000 / ab c -2020 и http://127.0.0.1: 8000 / ab c -2020 / возвращает исключение «Страница не найдена»
Но если я использую следующий маршрут с re_path. Это работает.
re_path(r'^(?P<c_name>[-\w]+)/$', CLandingView.as_view(), name="c_landing")