如何在 Django 中处理具有多个变量的同一参数的 request.GET

2023-11-29

在 Django 视图中,您可以访问request.GET['variablename'],所以在你看来你可以这样做:

myvar = request.GET['myvar']

实际上request.GET['myvar']对象类型是:

<class 'django.http.QueryDict'>

现在,如果您想传递具有相同参数名称的多个变量,即:

http://example.com/blah/?myvar=123&myvar=567

你想要一条蟒蛇list返回参数myvar,然后做这样的事情:

for var in request.GET['myvar']:
    print(var)

但是,当您尝试只获取 url 中传递的最后一个值时,即在上面的示例中,您将得到567,shell 中的结果将是:

5
6
7

但是,当您打印request.GET似乎它有一个list i.e:

<QueryDict: {u'myvar': [u'123', u'567']}>

好的更新: 它旨在返回最后一个值,我的用例是我需要一个列表。

来自 Django 文档:

查询字典。getitem(钥匙) 退货 给定键的值。如果 key 有多个值,getitem() 返回最后一个值。提高 django.utils.datastructs.MultiValueDictKeyError 如果密钥不存在。 (这是一个 Python标准的子类 KeyError,所以你可以坚持捕获 按键错误

QueryDict.getlist(key) 返回 具有请求的密钥的数据,作为 Python 列表。如果返回空列表 密钥不存在。是有保证的 返回某种列表。

更新: 如果有人知道为什么 django 开发人员这样做,请告诉我,显示列表似乎违反直觉,而且它的行为也不像列表。不太Pythonic!


你想要的获取列表()GET对象的功能:

request.GET.getlist('myvar')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Django 中处理具有多个变量的同一参数的 request.GET 的相关文章

随机推荐