【发布时间】:2022-01-23 23:49:57
【问题描述】:
我想尝试将在 django 3.2.6 上运行良好的 django 应用升级到下一个版本,但即使在测试中我也遇到了已弃用的 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)),
]
但在网址为 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,还是为模板提供basename?我可以在 Django 中修复它吗?
【问题讨论】:
标签: django ajax django-rest-framework django-urls django-4.0