在Django视图中,你可以访问request.GET['variablename'],因此在视图中你可以执行以下操作:
request.GET['variablename']
myvar = request.GET['myvar']
实际的request.GET[‘myvar’]对象类型是:
<class 'django.http.QueryDict'>
现在,如果要传递具有相同参数名称的多个变量,即:
http://example.com/blah/?myvar=123&myvar=567
你想要list为参数返回python myvar,然后执行以下操作:
list
python myvar
for var in request.GET['myvar']: print(var)
但是,当你尝试仅获得url中传递的最后一个值时,即在上面的示例中,你将获得567,而在shell中的结果将是:
5 6 7
但是,当你打印request.GET它时,它似乎带有一个listie:
<QueryDict: {u'myvar': [u'123', u'567']}>
确定更新:它旨在返回最后一个值,我的用例是我需要一个列表。
来自Django文档:
QueryDict。getitem(键)返回给定键的值。如果键具有多个值,则 getitem()返回最后一个值。如果键不存在,则引发django.utils.datastructures.MultiValueDictKeyError。(这是Python标准KeyError的子类,因此你可以坚持捕获KeyError
QueryDict.getlist(key)以Python列表形式返回带有请求的键的数据。如果键不存在,则返回一个空列表。确保可以返回某种列表。
更新:如果有人知道django开发人员为什么这样做,请告诉我,显示列表似乎违反直觉,并且它的行为不像一个。不是很pythonic!
你需要GET对象的getlist()函数:
getlist()
request.GET.getlist('myvar')