Python字符串为空,但也不是None或空字符串

问题描述 投票:0回答:1
class StartAnalysis(BaseHandler):
    def post(self):
        playlist = self.request.get('playlist')
        language = self.request.get('language')

如果我提出的POST请求没有这个 playlist 字段,然后发生这种情况。

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

我应该如何检查它是否为None?为什么它说它是null而不是None?

我使用的是AppEngine。

我的javascript代码做的POST请求。

let params = new URLSearchParams(location.search);
let url_id = params.get('id');
let url_language = params.get('language');
const url = 'http://localhost:8080/start-analysis?playlist=' + url_id + '&language=' + url_language;
$.ajax({
    url: url,
    type: 'POST',
    success: function(results) {
       ...
    },
    error: function(error) {
       ...
    }
});
python httprequest webapp2
1个回答
1
投票

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

let params = new URLSearchParams(location.search);
let url_id = params.get('id');
let url_language = params.get('language');
const url = 'http://localhost:8080/start-analysis';
$.ajax({
    url: url,
    type: 'POST',
    dataType: 'json',
    contentType: 'application/json',
    data: JSON.stringify({'playlist': url_id,'language': url_language}),
    success: function(results) {
        ...
    },
    error: function(response, status, error) {
        ...
    }
});

而后台接收到的是这样的。

class StartAnalysis(BaseHandler):
    def post(self):
        data = json.loads(self.request.body)
        playlist = data['playlist']
        language = data['language']

© www.soinside.com 2019 - 2024. All rights reserved.