为了账号安全,请及时绑定邮箱和手机立即绑定

Python 字符串为 null 但也不是 None 也不是空字符串

Python 字符串为 null 但也不是 None 也不是空字符串

largeQ 2022-11-01 17:12:12
class StartAnalysis(BaseHandler):    def post(self):        playlist = self.request.get('playlist')        language = self.request.get('language')playlist如果我在没有此字段的情况下发出 POST 请求,则会发生这种情况:>>> playlistnull>>> type(playlist)<type 'unicode'>>>> playlist is NoneFalse>>> not playlistFalse>>> playlist == ''False>>> playlist == u''False我应该如何检查它是否为无?为什么说它是 null 而不是 None?我正在使用 AppEngine。我发出 POST 请求的 javascript 代码: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) {       ...    }});
查看完整描述

1 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

我改为使用application/jsonPOST 请求而不是默认值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']


查看完整回答
反对 回复 2022-11-01
  • 1 回答
  • 0 关注
  • 141 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信