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++')]