Маршрут Джанго, дающий 404

#django #django-rest-framework #openapi #drf-yasg

Вопрос:

У меня есть маршрут, зарегистрированный в urls.py файл моего основного приложения django в виде:

 router.register(r"visual/(?P<random_url>[w] )/$", views.LinkTest, basename="test")
 

и шаблоны URL-адресов, определенные как:

 urlpatterns = [
    # Admin
    path("admin/", admin.site.urls),
    # Model API Routes
    path("rest/api/latest/", include(router.urls))
]
 

это означает, что я должен быть в состоянии попасть в набор представлений с помощью следующего вызова

http://localhost:8000/rest/api/latest/visual/random_string/

но я получаю 404

Кто-нибудь может сказать мне, что я делаю не так?

Ответ №1:

Загвоздка здесь в том , что, хотя ваш URL visual/random_string/ -адрес совпадает с регулярным visual/(?P<random_url>[w] )/$ выражением, маршрутизатор /$ автоматически добавляет его в указанное вами регулярное выражение.

Следовательно, внутренне ваше регулярное выражение преобразуется в то, с visual/(?P<random_url>[w] )/$/$ которым оно не совпадает visual/random_string/ .

Итак, удалите /$ из своего регулярного выражения и просто сохраните код фоллинга.

 router.register(r"visual/(?P<random_url>[w] )", views.LinkTest, basename="test")
 

Комментарии:

1. Да, ты был прав, это сработало для меня, Спасибо, Мохит