0

我想尝试将在 django 3.2.6 上运行良好的 django 应用程序升级到下一个版本,但即使在测试中我也遇到了已弃用的urlhttps://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.

使用 django 3.26 的 ajax 调用中的 api 路径正在工作:

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

所以我完全明白为什么这不起作用 - 但我如何(以及在​​哪里?)修复它?

我考虑过将绝对路径(如${window.location.hostname}/api/products/)传递给 ajax,或者为模板提供基本名称?我可以在 Django 中修复它吗?

4

1 回答 1

2

在你的情况下, Djangourl是别名re_path而不是别名path

...
re_path('api/', include(router.urls)),
...
于 2021-12-22T21:59:42.347 回答