RESTful,前后端分离、通过调用API接口实现功能。每个URL视为一个资源,客户端通过http动词,对服务器资源进行操作。关于RESTful的原理,可以参考这篇文章: http://www.ruanyifeng.com/blog/2011/09/restful

打开ipython

In [2]: from snippets.models import Snippet

In [3]: from snippets.serializers import SnippetSerializer

In [4]: from rest_framework.renderers import JSONRenderer

In [5]: from rest_framework.parsers import JSONParser
In [10]: ddd = Snippet(code='print "ddd"\n')
In [11]: ddd.save()
In [14]: cdd=SnippetSerializer(ddd)
In [15]: cdd.data
Out[15]: {'id': 3, 'title': '', 'code': 'print "ddd"\n', 'linenos': False, 'language': 'python', 'style': 'friendly'}

把数据转化成JSON格式:

In [19]: content = JSONRenderer().render(cdd.data)
In [20]: content
Out[20]: b'{"id":3,"title":"","code":"print\\"ddd\\"\\n","linenos":false,"language":"python","style":"friendly"}'

反向的,把json解析成Python自带的数据格式:

In [21]: from django.utils.six import BytesIO

In [22]: st=BytesIO(ee)

In [23]: data=JSONParser().parse(st)

In [24]: data
Out[24]:
{'id': 3,
 'title': '',
 'code': 'print "ddd"\n',
 'linenos': False,
 'language': 'python',
 'style': 'friendly'}

检查数据然后保存数据到数据库中:

In [25]: seri=SnippetSerializer(data=data)

In [26]: seri.is_valid()
Out[26]: True

In [27]: seri.validated_data
Out[27]:
OrderedDict([('title', ''),
             ('code', 'print "ddd"'),
             ('linenos', False),
             ('language', 'python'),
             ('style', 'friendly')])

In [28]: seri.save()
Out[28]: <Snippet: Snippet object>
FFwechat FFalipay