首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何向DRF发送未知数目的滤波器值?得到还是邮寄?

如何向DRF发送未知数目的滤波器值?得到还是邮寄?
EN

Stack Overflow用户
提问于 2019-08-15 10:45:35
回答 1查看 574关注 0票数 0

我正在建立一个过滤系统,您可以过滤产品的品牌和类别。用户在中选择过滤器,这将触发对后端API (Django Rest Framework )的请求,即GET或Post。理想情况下,Django将接收筛选器名称,作为它可以迭代的值。

我完全搞不懂如何做到这一点。

一个GET请求是可能的。但是,为了使DRF能够处理请求,它需要有uri格式:

代码语言:javascript
复制
http://127.0.0.1:8000/filter/?categories=proviant&categories=multipower&brands=kellogs

然后,我可以使用这样的视图来获取值。

代码语言:javascript
复制
class ProductFilterListView(APIView):

    def get(self, request):
        for el in request.GET.getlist('categories'):
            print(el)
        return Response('')

这是一个相当大的挑战,因为axios (用于发出JS请求的库)没有根据DRF的要求格式化url的选项。因此,这感觉非常错误,非常手动,很难成为一个“好”的解决方案(?)

另一种方法是使用post请求。但是,我从未将post请求用于在Django端没有序列化程序或表单的东西。因此,我不知道如何验证传入的post数据并将其转换为Django可以使用的格式。

,什么是“正确”的方法来处理这个问题?

更新:

我发现axios有一个paramsSerializer选项,允许将uri格式化为我需要的格式。这里是解决方案的一个片段。所以我想GET请求正在进行中. (?)

代码语言:javascript
复制
try {
            const res = await axios.get(`${baseURL}product/filter/`, {
                params: {
                    categories: filterArr
                }, paramsSerializer: (params) => {
                    return Qs.stringify(params, {arrayFormat: 'repeat'})
                  },
            })
        } catch(e) {

        }
EN

Stack Overflow用户

发布于 2019-08-15 11:07:13

可以将值列表作为参数传递到URL中,如下所示:

代码语言:javascript
复制
http://localhost:8000/?categories=first,second,third

当发布、获取等( params )时,Axios采用了一个文档参数:

代码语言:javascript
复制
const params = new URLSearchParams();
params.append('categories', [1, 2, 4, 76]);
axios.post('/foo', params);
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57508472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档