Django соответствие URL с параметром для начала - PullRequest
0 голосов
/ 11 марта 2020

У меня есть сайт, на котором я работаю, где мне нужно сопоставить параметр в начале 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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...