我正在使用Django rest框架开发一个app,同时从query
获取request
对象,包含+
字符的字符串被空格替换。
html javascript代码:
query = 's9+';
$.get("/api/v1/autocomplete?query=" + query, function(data, status){
str = JSON.stringify(data, null, 4);
document.getElementById("response").innerHTML = str;
});
Django休息框架代码:
def get(self, request):
search_query = request.GET.get('query', None)
print("search_query " + search_query)
Django代码打印s9
而不是s9+
。
如何防止Django自动将字符串中的+
转换为空格?
答案 0 :(得分:1)
查询字符串的元素是编码。的确,例如?
,&
和=
字符也不能使用,因为它们是分隔符。
如果您想对内容进行编码,最好使用encodeURIComponent
[doc]等实用程序函数:
query = 's9+';
$.get("/api/v1/autocomplete?query=" + encodeURIComponent(query), function(data, status){
str = JSON.stringify(data, null, 4);
document.getElementById("response").innerHTML = str;
});
最好对所有参数进行编码,因为几个字符集不能直接编码到查询字符串(西里尔字母,特殊字符,变音符号等)。