在Django视图中,您可以访问request.GET ['variablename']
,因此在您的视图中,您可以像这样执行操作:
myvar = request.GET['myvar']
实际的request.GET['myvar']
对象类型是:
<class 'django.http.QueryDict'>
如果您想要传递多个具有相同参数名称的变量,例如:
http://example.com/blah/?myvar=123&myvar=567
您希望在参数 myvar
中返回一个Python list
,那么可以尝试以下方法:
for var in request.GET['myvar']:
print(var)
然而,当你尝试这样做时,你只会得到通过URL传递的最后一个值,例如在上面的示例中,你将获得567,并且在shell中的结果将为:
5
6
7
然而,当你打印request.GET
时,它似乎有一个list
,即:
<QueryDict: {u'myvar': [u'123', u'567']}>
好的更新:
它被设计为返回最后一个值,我的用例是我需要一个列表。从 Django 文档中得知:
QueryDict.getitem(key) 返回给定键的值。如果键有多个值,则 getitem() 返回最后一个值。如果键不存在,则引发 django.utils.datastructures.MultiValueDictKeyError(这是 Python 标准 KeyError 的子类,因此您可以继续捕获 KeyError)。
QueryDict.getlist(key) 返回请求键的数据作为 Python 列表。如果键不存在,则返回空列表。它保证返回某种列表。
更新: 如果有人知道 Django 开发人员为什么这样做,请让我知道,似乎与显示列表的方式相矛盾,而且它不像列表那样行为。不太符合 Python 风格!