gpt4 book ai didi

python - Django请求GET参数值列表

转载 作者:行者123 更新时间:2023-11-30 22:43:16 27 4
gpt4 key购买 nike

我想做一些排序,我想要的是使用名为 ordering 的参数执行 GET 请求,如下所示,该值将是我将用于排序的模型属性,如下所示:

?order=['-age', 'height']

问题是当我尝试接收订单参数时。该值是一个列表。

我尝试像这样使用 ast:

if 'order' in request.GET:
import ast
order = ast.literal_eval(request.GET.get('order'))
queryset = queryset.order_by(*order)

它成功了。但是,我想避免使用 ast 库,还有其他方法吗?

更新

我的参数是这样的:

?order=-年龄,高度

就像这样在 python 中使用 split :

if 'order' in request.GET:
order = request.GET.get('order').split(',')
queryset = queryset.order_by(*order)

最佳答案

Django 允许在请求中发送多个 GET 参数,但发送它们的方式是错误的(不仅适用于 Django)
您请求的格式应为 ?order=-age&order=height
然后在 View 中您可以执行 order_list = request.GET.getlist('order')

您无需检查键“order”是否在 GET 参数中,因为如果未找到该键,.getlist() 将返回一个空列表...

如果您只需要列表中的第一项,可以使用 request.GET.get('order'),如果键不存在,则返回 None。

最终代码:

order_list = request.GET.getlist('order')
queryset = queryset.order_by(*order_list)

P.S 虽然 django 允许 GET 参数命名为任何名称,但 PHP(我认为其他网络语言)要求 GET 列出参数命名为 param[] (例如 order[]),因此库就像 JQuery 一样命名您的 AJAX 请求参数。在这种情况下,您必须在 View 中使用正确的名称,即 request.GET.getlist('order[]')

关于python - Django请求GET参数值列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41823399/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com