如何从URL查询字符串中查找非null变量?或者我们可以从python中的请求获取URL查询字符串中的变量

兆字节

我想基于Django python中的多个字段过滤数据。
场景是,如果对Web服务器的GET请求到来,/searchStudent/?firstName=&lastName=xyzage=23&class=&city=而我们不知道查询字符串中可能的参数是什么,则其中一些可以带有值,而某些变量不带有值。问题是,有没有从请求中获取仅具有值或没有值的变量的方法。我知道我们可以使用来简单地获取值,request.GET.get('city')但是我正在寻找从查询字符串中获取非null变量的方法,有没有办法从查询字符串中找到非值变量?在上述情况下city, class, and firstName,没有值,我也不想在过滤器上添加它。正确的方法是什么?请提出正确的方法。

双体船

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

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

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

fields = ('firstName', 'lastName', 'age', 'class', 'city', )
filter_params = dict((field, value)
                        for field, value in request.GET.iteritems()
                        if value and field in fields)
students = Student.objects.filter(**filter_params)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档