如何从URL查询字符串中找到notnull变量?或者我们可以从python的请求中得到URL查询字符串中的变量吗

2024-05-14 20:57:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在Django python中基于多个字段过滤数据。
在这种情况下,如果对webserver的GET请求以/searchStudent/?firstName=&lastName=xyzage=23&class=&city=的形式出现,并且我们不知道查询字符串中可能的参数是什么,那么其中一些可以带有值,而有些变量没有值。问题是,有没有从请求中获取只有值或没有值的变量。我知道我们可以简单地使用request.GET.get('city')来获取值,但是我正在寻找从查询字符串中获取非空变量的方法,有没有办法从查询字符串中找到非值变量?在上面的场景中,city, class, and firstName没有值,我不想将其添加到筛选器中。正确的方法是什么?请推荐正确的方法。在


Tags: 数据django方法字符串city参数get情况
2条回答

要获取非空查询参数的dict,请使用以下代码:

non_empty_params = dict((field, value)
                        for field, value in request.GET.iteritems() if value)

但是不要用这种方式构建queryset。永远不要相信来自用户输入的数据。因此,您必须有一个要搜索的字段列表,并使用此列表筛选出不正确的字段名:

^{pr2}$

我这样做了,得到了动态过滤的答案

filter_args={}
if request.GET.get('firstName') :
    filter_args['firstName']=request.GET.get('firstName')
if request.GET.get('lastName') :
    filter_args['lastName']=request.GET.get('lastName')
if request.GET.get('city') :
    filter_args['city']=request.GET.get('city')
Student.object.filter(**filter_args)

这就是所谓的动态查询,我不知道这一点。感谢@catavaran,你提出了这个概念。
还引用了这个链接Dynamic Django Queries

相关问题 更多 >

    热门问题