字符串+替换为空格

时间:2018-06-08 10:47:36

标签: django django-rest-framework

我正在使用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自动将字符串中的+转换为空格?

1 个答案:

答案 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;
    });

最好对所有参数进行编码,因为几个字符集不能直接编码到查询字符串(西里尔字母,特殊字符,变音符号等)。