如何在 django rest 框架中对项目的删除 url 进行 url-reverse

Posted

技术标签:

【中文标题】如何在 django rest 框架中对项目的删除 url 进行 url-reverse【英文标题】:How to url-reverse the delete url for an item in django rest framework 【发布时间】:2018-12-19 09:36:51 【问题描述】:

我正在测试我的删除项目 API,但我无法确定如何获取删除请求的 URL。

我正在使用:

Django==1.11.13
 and 
djangorestframework==3.7.7

对于<api-path>/favorite-items/1/ 的 DELETE 请求,url_reverse 的正确方法是什么?

我正在尝试在以下位置对项目的删除进行 url-reverse: <api-path>/favorite-items/1/.

url.py文件:

from rest_framework.routers import DefaultRouter
router = DefaultRouter()
router.register(r'favorite_item', FavouriteItemAPI, base_name='favorite-items')
urlpatterns = router.urls

我试过了:

    from model_mommy import mommy
    fav_item = mommy.make(FavouriteItem)
    view = FavouriteItemAPI()  # extends the Destroy mixin and has a destroy method
    url = view.reverse_action('destroy', args=[request_instance, fav_item.id])

如文档中所述:http://www.django-rest-framework.org/api-guide/viewsets/#reversing-action-urls

编辑: 有效的是

    url =  '/'.format(url_reverse('favorite-items'), fav_item.id)

但是一点都不好看

编辑 2: 读起来不错的似乎是:

    url = url_reverse('favorite-items-detail', kwargs='pk':fav_item.id)

欢迎任何其他选择

【问题讨论】:

你从哪里得到“destroy”描述字符串? 修改问题后发现我使用了drf DestroyModelMixin的destroy方法来执行DELETE请求。 【参考方案1】:

使用

url_reverse('favorite-items-detail', kwargs="pk": fav_item.id)

使用DELETE HTTP 方法。

这是来自docs 的有用的 url - 方法 - 操作 - 名称表。

【讨论】:

以上是关于如何在 django rest 框架中对项目的删除 url 进行 url-reverse的主要内容,如果未能解决你的问题,请参考以下文章

如何在 django rest 框架中仅使用特定变体对象将项目添加到愿望清单?

在 django rest 框架中删除多个对象

Django Rest 框架数据表删除

Django rest框架:如何全局更改错误响应格式

Django rest 框架 jwt 令牌权限

如何使用 django rest 框架和 angular 上传图片?