关于django rest framework Serializer CharField保留空格,不自动trim
来源:互联网 发布:淘宝满包邮在哪里设置 编辑:程序博客网 时间:2024/06/06 13:02
在django reset frame work的 Serializer的CharField中,会自动去除空格,例如一个Serializer中有一个CharField,输入为"abcde ",当你调用serializer.valdated_data时会发现变成了"abcde",有时候这种效果并不是我们想要的。通过调试跟踪发现CharField的run_validation方法中有如下代码:
def run_validation(self, data=empty): # Test for the empty string here so that it does not get validated, # and so that subclasses do not need to handle it explicitly # inside the `to_internal_value()` method. if data == '' or (self.trim_whitespace and six.text_type(data).strip() == ''):#重点 if not self.allow_blank: self.fail('blank') return '' return super(CharField, self).run_validation(data)
可以看到if data == '' or (self.trim_whitespace and six.text_type(data).strip() == '')这一行,如果self.trim_whitespace为True就会调用strip,这个self.trim_white_space来自哪里呢?继续跟进会发现CharField中的__init方法有如下代码:
def __init__(self, **kwargs): self.allow_blank = kwargs.pop('allow_blank', False) self.trim_whitespace = kwargs.pop('trim_whitespace', True)//重点 self.max_length = kwargs.pop('max_length', None) self.min_length = kwargs.pop('min_length', None) super(CharField, self).__init__(**kwargs)
可以看到self.trim_whitespace来自于参数trim_whitespace,默认为True,所以在声明CharField时,传入这个参数并设为False就不会调用strip了,例如:username=serializers.CharField(trim_whitespace = False),输入"abcde ",validated_data得到的还是"abcde "。
个人觉得django rest framework的文档一点都不详细,很多东西必须看源码,文档比起django差远了
阅读全文
0 0
- 关于django rest framework Serializer CharField保留空格,不自动trim
- django rest framework Serializer
- Django笔记 Django REST framework的Serializer 2
- django rest framework关联关系——Serializer relations
- Django REST framework
- Django REST framework API
- Django REST framework
- Django-Rest-Framework 教程
- Django Rest Framework
- django rest framework quickstart
- Django rest framework
- Django rest framework --- Routers
- Django rest framework ---Serializers
- Django-Rest-Framework 入门
- Django Rest Framework - 初识
- django-REST framework
- Django rest framework权限
- Django REST framework-Quickstart
- 拼音串最有可能表示的意思
- ymodem图片
- Hbuilder集成微信支付教程(简单流程)
- vmware中CentOS7网络设置教程详解
- 2017年多校赛第九场 1006 Senior Pan(dijkstra套路题)
- 关于django rest framework Serializer CharField保留空格,不自动trim
- Socket,IO(一)
- Scala-archetype-simple Version:1.6
- 在一个int数组里查找这样的数,它大于等于左侧所有数,小于等于右侧所有数
- 【小程序合集】来一组适合你的表情包-表情包大全
- Mysql索引详解及优化(key和index区别)
- C++中函数参数传递(值传递、指针传递,引用传递)
- 测试
- 3. Longest Substring Without Repeating Characters