python - Django - 重建没有变量之一的查询字符串

标签 python django django-views

我有一个处理 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/

相关文章:

python - 在 Windows 上安装 GDCM -- ImportError

python - 将curl 转换为Python 请求(post)

django - Django 如何提供媒体文件?

python - 在过滤器内的模型字段中按间隔增加日期的月份

python - 移动应用程序的 Django Rest 框架中的版本控制编程

Python/Django - 为对象提供刚刚创建的外键时遇到问题

python - 我的密码存储在 Django admin 的电子邮件字段内

django - 使用 Django RequestFactory 时如何传递额外的关键字参数?

django - 如何在Django中返回与外键相关的多个对象

python - 在单独线程的终端中监听 Python 按键