android - 如何返回与 url django rest 中具有相同名字或姓氏的所有用户实例?

标签 android python rest search django-rest-framework

我正在构建一个 django rest api 作为 android 应用程序的后端。我正在 android 客户端中实现一个搜索功能,它应该传递查询字符串;这可以是名字、姓氏、两者或电子邮件,发送到后端以在用户模型中搜索任何匹配的实例,并将它们返回以显示在客户端的回收站 View 中。

我的 url 在客户端构建的方式如下所示:

@GET("users/search/{name}")
Call<List<User>> searchUsers(@Path("name") String name);

这个端点的 urls.py 看起来像这个服务器端:

url(r'^search/(?P<username>.+)/$', user_views.UserSearchListView.as_view(), name="user_search"),

映射到 is url 的 View 如下所示:

class UserSearchListView(generics.ListAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer
    filter_backends = (filters.SearchFilter,)
    search_fields = ('firstName', 'lastName', 'email')

当我用 postman 测试我的 API 时,无论我在 url 中输入什么字符串,都会返回所有用户,而不仅仅是相关用户。如何解决此问题,以便只返回名字、姓氏或电子邮件匹配的用户?

最佳答案

您似乎没有使用 filters.SearchFilter正确。

# views.py
class UserSearchListView(generics.ListAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer
    filter_backends = (filters.SearchFilter,)
    search_fields = ('firstName', 'lastName', 'email')

# urls.py
url(r'^search/$', user_views.UserSearchListView.as_view(), name="user_search"),

然后要请求对用户进行搜索,您需要请求 url:

/users/search/?search=@example.com

这将返回其名字、姓氏或电子邮件包含字符串 "@example.com" 的所有用户。查看 SearchFilter 文档,了解有关其工作原理以及应如何自定义搜索和过滤的更多信息。 http://www.django-rest-framework.org/api-guide/filtering/#searchfilter

关于android - 如何返回与 url django rest 中具有相同名字或姓氏的所有用户实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45336880/

相关文章:

java - 如何在 Android 中的 Activity 之间访问相同的变量

python - Python 中的十六进制格式

Python - 如何删除汉字之间的空格,同时保留字符和数字之间的空格?

python - 使用 Anaconda 安装 MySQLdb

java - 改造后参数

java - Spring Boot mvc 异步执行

java - Android更改语言配置会弄乱布局

android - 如何自定义 ListView 以使行项目的第一和第二位置具有不同的布局?

java - 导航图标太大 - 如何调整其大小

java - 客户端监听 JMS 队列在架构上是错误的吗?