QueryDict in Django


from django.http import QueryDict
QueryDict('query=c++')

为什么输出是,<QueryDict: {u'query': [u'c ']}>

querydict是否从字符串中删除+符号?我使用Python 2.7.17和Django 1.10.4版本。

当您实例化QueryDict类时,它调用parse_qs来解析query_string(在本例中是'query=c++')。查看djangoQueryDict的实现。

>>> from urllib.parse import parse_qsl
>>> parse_qsl("query=c++")
[('query', 'c  ')]

那么为什么结果是空格而不是+呢?答案在查询字符串中,加号被保留作为空格的速记符号。因此,必须对实加号进行编码。

>>> from urllib.parse import parse_qsl
>>> parse_qsl("query=c%2B%2B")
[('query', 'c++')]

最新更新