在 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!