如何使Django的BooleanField兼容字符串输入?
- 内容介绍
- 文章标签
- 相关推荐
本文共计826个文字,预计阅读时间需要4分钟。
在Django中,你可以将字符串形式的数值赋值给IntegerField,Django会默认将其转换为int类型。但对于BooleanField,则不行,它只能接受True和False,或者0和1(注意:在Python中,True等同于1,False等同于0)。
再Django中,你可以把字符串形式的数值赋值给IntegerField,然后Django会默认把字符串转换成int。
但是BooleanField则不行,BooleanField只能接受True和False,或者0和1(BTW:在python中True即是1,False即是0)。
这对于很多网络参数上传的场景很不利,因为很多时候我们处于方便会将布尔型参数转换成字符串形式来上传。
一个典型的场景是在使用Swfit的Alamofire框架中的upload来上传Multipartform时,由于form参数只能添加Data形式的参数,直接将Bool型转化成Data会非常麻烦,带来编码类型的问题。
例如采用如下的方式进行转化:
let dataToUpload = Data(bytes: boolVal, count: MemoryLayout<Bool>.size)
以这种形式上传最后被django接收到时,这个字段的值会是"\x00"(False)或者"\x01"(True),导致编码类型的错误。
所以一个较为方便的方法是将bool型变量转化成字符串再上传。
本文共计826个文字,预计阅读时间需要4分钟。
在Django中,你可以将字符串形式的数值赋值给IntegerField,Django会默认将其转换为int类型。但对于BooleanField,则不行,它只能接受True和False,或者0和1(注意:在Python中,True等同于1,False等同于0)。
再Django中,你可以把字符串形式的数值赋值给IntegerField,然后Django会默认把字符串转换成int。
但是BooleanField则不行,BooleanField只能接受True和False,或者0和1(BTW:在python中True即是1,False即是0)。
这对于很多网络参数上传的场景很不利,因为很多时候我们处于方便会将布尔型参数转换成字符串形式来上传。
一个典型的场景是在使用Swfit的Alamofire框架中的upload来上传Multipartform时,由于form参数只能添加Data形式的参数,直接将Bool型转化成Data会非常麻烦,带来编码类型的问题。
例如采用如下的方式进行转化:
let dataToUpload = Data(bytes: boolVal, count: MemoryLayout<Bool>.size)
以这种形式上传最后被django接收到时,这个字段的值会是"\x00"(False)或者"\x01"(True),导致编码类型的错误。
所以一个较为方便的方法是将bool型变量转化成字符串再上传。

