如何在 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的主要内容,如果未能解决你的问题,请参考以下文章