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>
![]() |
![]() |