Обновление 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)),
]

к:

      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 или указав базовое имя для шаблона? Могу я исправить это в Django?

1 ответ

Джангоurlбыл псевдонимомre_pathа не кpathтак что в вашем случае

      ...
re_path('api/', include(router.urls)),
...
Другие вопросы по тегам