Обновление Django с 3.2 -> 4.0 и пути DRF

Я хотел попробовать обновить мое приложение django, которое прекрасно работает на django 3.2.6, до следующего релиза, но даже при тестировании я столкнулся с устаревшим url (https://docs.djangoproject.com/en/4.0/ref/urls/).

Поэтому я заменил последние строки в urls.py:

router = routers.DefaultRouter()
router.register(r'products', views.ProductViewSet, basename = "products")

urlpatterns = [
    ...,
    url('api/', include(router.urls)),
]

to:

urlpatterns = [
    ...,
    path('api/', include(router.urls)),
]

но на сайте, который имеет url http://127.0.0.1:8003/productspage/ я теперь получаю сообщение об ошибке: The current path, productspage/api/products/, didn’t match any of these.

Путь для api в ajax вызовах с django 3.26 работал:

async function doAjax ( ) {
    let result = await $.ajax({url: "api/products/"});
}

Итак, я полностью понимаю, почему это не работает - но как (и где?) мне это исправить?

Я думал о том, чтобы передать абсолютный путь (например, ${window.location.hostname}/api/products/) в ajax, или предоставить basename для шаблона? Могу ли я исправить это в Django?

Django url был псевдонимом для re_path, а не для path, поэтому в вашем случае

...
re_path('api/', include(router.urls)),
...
Вернуться на верх