我有一个处理 GET 请求的 Django View 。我想重建查询字符串以包括所有变量除了一个。
我最初使用的是列表理解:
>>> from django.http import QueryDict
>>> q = QueryDict('a=2&b=4&c=test') // <--- make believe this is request.GET
>>> z = QueryDict('').copy()
>>> z.update(dict([x for x in q.items() if x[0] != 'b']))
>>> z.urlencode()
但我相信这可能是一个更好的解决方案:
>>> from django.http import QueryDict
>>> q = QueryDict('a=2&b=4&c=test') // <--- make believe this is request.GET
>>> z = q.copy()
>>> del z['b']
>>> z.urlencode()
谁能想到更好的方法?
最佳答案
Django 为您将 GET 请求变量放入字典中,因此 request.GET 已经是一个 QueryDict。你可以这样做:
z = request.GET.copy()
del z['a']
请注意,python(和 django QueryDicts)中的字典没有 del() 方法,您必须使用 python 的内置 del() 函数。 QueryDicts 是不可变的(但它们的副本不是),因此在尝试从中删除之前复制它是正确的。此外,在你的最后一行 z.urlencode() 返回一个字符串,它不会将 z 转换为 url 编码的字符串,因此你需要将它分配给另一个变量以便稍后对其进行处理。
希望对你有帮助
关于python - Django - 重建没有变量之一的查询字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5036498/