Python字符串为null,但也不是';t无或空字符串 类StartAnalysis(BaseHandler): def post(自我): playlist=self.request.get('playlist') language=self.request.get('language')

Python字符串为null,但也不是';t无或空字符串 类StartAnalysis(BaseHandler): def post(自我): playlist=self.request.get('playlist') language=self.request.get('language'),python,httprequest,webapp2,Python,Httprequest,Webapp2,如果我在没有此播放列表字段的情况下发出POST请求,则会发生以下情况: >>> playlist null >>> type(playlist) <type 'unicode'> >>> playlist is None False >>> not playlist False >>> playlist == '' False >>> playlist == u'' False

如果我在没有此
播放列表
字段的情况下发出POST请求,则会发生以下情况:

>>> playlist
null
>>> type(playlist)
<type 'unicode'>
>>> playlist is None
False
>>> not playlist
False
>>> playlist == ''
False
>>> playlist == u''
False

我改为对POST请求使用
application/json
,而不是默认的
application/x-www-form-urlencoded
,这似乎解决了当其中一个参数为空或缺失时请求发送字符串
“null”
而不仅仅是空字符串的问题

let params=新的URLSearchParams(location.search);
让url_id=params.get('id');
让url_language=params.get('language');
常量url=http://localhost:8080/start-分析';
$.ajax({
url:url,
键入:“POST”,
数据类型:“json”,
contentType:'应用程序/json',
数据:JSON.stringify({'playlist':url\u id,'language':url\u language}),
成功:功能(结果){
...
},
错误:功能(响应、状态、错误){
...
}
});
后端接收它的方式如下:

类StartAnalysis(BaseHandler):
def post(自我):
data=json.load(self.request.body)
playlist=数据['playlist']
语言=数据[“语言”]

这是Python 2吗?无论如何,Python中没有null,这是字符串
“null”
,但它表明了一个更大的问题,即您可能没有反序列化JSON属性。这是Python 2.7。你的评论帮我弄明白了。“null”是一个字符串,但我使用的是print语句,所以我没有注意到。POST请求是在js中发出的,在空白端点中有一个填充,我猜js会在字符串中插入'null',而不仅仅是一个空字符串。谢谢。它可能不会插入字符串“null”,您只是获取响应的字符串文本版本。如果将JS端的
null
反序列化为Python对象,它将被转换为
None
噢,我忘了我想说的另一点。除非您被迫使用Python 2,否则您确实需要升级到Python 3。Python2已经到了生命的尽头,不再受支持。您可以与我们分享您的POST请求吗?甚至可以使用request.params代替request.get