在 django rest 框架中定义 searchFilter URL

Posted

技术标签:

【中文标题】在 django rest 框架中定义 searchFilter URL【英文标题】:Define searchFilter URL in django rest framework 【发布时间】:2021-09-15 21:15:50 【问题描述】:

目前我正在从事一个商店管理项目。该项目正在使用 django、django-rest-framework 和 react 构建。我想过滤模型数据。所以我安装了 django-filter。我需要定义像“http://localhost:8000/api/search-products/?category=oil&product=mustard oil”这样的网址。我该怎么做?

我的产品搜索视图是-

class SearchProduct(generics.ListAPIView):
    serializer_class = ProductSerializer
    filter_backends = [filters.SearchFilter]
    search_fields = ["category", "name"]

我的网址是-

path("api/search-product/?<str:category>&<str:name>", SearchProduct.as_view())

显示页面未找到错误。

如何定义合适的url路径?

【问题讨论】:

您不必在urls.py中定义查询参数 那它是如何工作的呢? 查询参数不应该是路径 url 的一部分。不过它们仍然会被覆盖,它将由 django-filter 为您处理 【参考方案1】:

你不应该把它定义为path parameters:

path("api/search-product/", SearchProduct.as_view())  

你可以这样调用端点:

.../api/search-product/?search=any_thing_you_want

【讨论】:

以上是关于在 django rest 框架中定义 searchFilter URL的主要内容,如果未能解决你的问题,请参考以下文章

如何在 django rest 框架中定义列表字段?

如何在 Django REST 框架中为多对多字段定义“IsOwner”自定义权限?

如何在 django rest 框架中反转 ViewSet 自定义操作的 URL

Django Rest 框架中的自定义用户模型注册

Django rest框架中的自定义kwarg

从 django rest 框架中的序列化程序发送自定义错误响应?