Python的類型描述組件:Schematics
Python 庫基礎上的類型描述組件, 能對數據類型進行對比/合成為新結構,并進行驗證和轉換!
一些常見的用例:
- Design and document specific data structures
- Convert structures to and from different formats such as JSON or MsgPack
- Validate API inputs
- Remove fields based on access rights of some data's recipient
- Define message formats for communications protocols, like an RPC
- Custom persistence layers
示例
This is a simple Model.
>>> from schematics.models import Model >>> from schematics.types import StringType, URLType >>> class Person(Model): ... name = StringType(required=True) ... website = URLType() ... >>> person = Person({'name': u'Joe Strummer', ... 'website': 'http://soundcloud.com/joestrummer'}) >>> person.name u'Joe Strummer'
Serializing the data to JSON.
>>> import json >>> json.dumps(person.to_primitive()) {"name": "Joe Strummer", "website": "http://soundcloud.com/joestrummer"}
Let's try validating without a name value, since it's required.
>>> person = Person() >>> person.website = 'http://www.amontobin.com/' >>> person.validate() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "schematics/models.py", line 231, in validate raise ModelValidationError(e.messages) schematics.exceptions.ModelValidationError: {'name': [u'This field is required.']}
Add the field and validation passes
>>> person = Person() >>> person.name = 'Amon Tobin' >>> person.website = 'http://www.amontobin.com/' >>> person.validate() >>>
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!