我正在构建一个django restapi作为android应用程序的后端。我在android客户机中实现了一个搜索功能,它应该将查询字符串传递给后端,可以是名字、姓氏,也可以是电子邮件,以便在用户模型中搜索任何匹配的实例,并返回它们以显示在客户端的回收器视图中。你知道吗
在客户端构建url的方式如下所示:
@GET("users/search/{name}")
Call<List<User>> searchUsers(@Path("name") String name);
那个网址.py对于此终结点,它类似于此服务器端:
url(r'^search/(?P<username>.+)/$', user_views.UserSearchListView.as_view(), name="user_search"),
映射到is url的视图如下所示:
class UserSearchListView(generics.ListAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
filter_backends = (filters.SearchFilter,)
search_fields = ('firstName', 'lastName', 'email')
当我用postman测试API时,不管我在url中输入什么字符串,都会返回所有用户,而不是只返回相关的用户。如何修复此问题,以便仅返回名、姓或电子邮件匹配的用户?你知道吗
看起来你没有正确使用^{} 。你知道吗
然后,要请求对用户进行搜索,您需要请求url:
/users/search/?search=@example.com
它将返回firstName、lastName或email中包含字符串
"@example.com"
的所有用户。查看SearchFilter文档了解更多关于如何工作以及如何定制搜索和过滤的信息。http://www.django-rest-framework.org/api-guide/filtering/#searchfilter这是因为您没有使用
filters.SearchFilter
所要求的正确url结构。根据Django REST Framework Documentation,您需要提供搜索字段作为查询参数,如下所示:所以你的网址.py应该是这样的:
应该使用
search?search=<name>
调用。你知道吗相关问题 更多 >
编程相关推荐