我有 Django 模型
class OrderItem(models.Model):
comment = models.CharField('comment', max_length=255, blank=True)
.....
和其他不重要的领域。
我有这样描述的 spyne 模型
class OrderItemModel(DjangoComplexModel):
__type_name__ = 'OrderItem'
class Attributes(DjangoComplexModel.Attributes):
django_model = OrderItem
和产生响应的函数
@rpc(Int, _returns=Iterable(OrderItemModel))
def GetOrderItems(self, id):
order = get_object(Order, pk=id)
items = order.objects.all()
return items
xml描述是
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Body>
<SaveOrderItem xmlns="app.sync">
<model>
<comment xmlns="app.sync.models">[normalizedString]</comment>
</model>
</SaveOrderItem>
</Body>
</Envelope>
发出请求的服务器然后验证响应,并在发现注释在开始或结束 os 字符串上有空格时引发异常。据我了解, normalizedString 类型不允许使用未剥离的刺。从那种类型的字符串中动态删除空格的任何方法也是如此。我查看了源代码并找到了类定义
class NormalizedString(Unicode):
__type_name__ = 'normalizedString'
__extends__ = Unicode
class Attributes(Unicode.Attributes):
white_space = "replace"
因此white_space = "replace"在客户端进行检查。