django restframework 学习总结

快速生成API,后端分离。

1.使用了 https://github.com/zmrenwu/django-blog-tutorial.git 该项目作为模板,

教程参考:一份官方文档:http://www.django-rest-framework.org/tutorial/1-serialization/ 

       一份gitbook文档(翻译版):https://whatwewant.gitbooks.io/django-rest-framework-tutorial-cn/content/1.Serialization.html

两份文档在代码上存在略微差异,需要细细比较,对照。

 

2.学习部分:

一、使用serializer,序列化:

serializers.py:            存在手动serializer 每个model 的field,也存在快速serializer。

views.py:                   定义list和detail的方法(使用JOSNResponse响应数据以及状态码)

urls.py;      更新url

 

二、使用 REST框架的 Response 和 APIView

views.py:      使用Response ,用装饰器 @api_view ,在方法中添加format格式

urls.py:      更新urlpatterns,添加格式后缀模式format_suffix_patterns(urlpatterns)

 

三、 使用视图类 ——>使用REST框架的混合类(mixin classes),再使用一般类(generic class)

views.py:     基于视图的类一样重写根视图 APIView   使用混合类(mixin classes),使用一般类(generic class)。以此不断减少代码。

url.py:       更新demo.as_view()

 

四、创建permissions.py,关联User

models.py:      外键关联django自带的User

serializers.py:    引入UserSerializer --------报错;'Category' object is not iterable ,此时检查超链接字段中不能包含 many=True 详情参考 官方文档:Dealing with nested objects

views.py;     添加perform_create 方法, 之后在serializer 中手动添加序列化字段 关联user和APP, 在view添加 permission_classes

urls.py:      在urls.py底部为API添加一个包括登录和退出视图的url样式,添加url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))

permissions.py:   新建permissions.py ,创建自定义权限, 在view中permission_classes添加自定义权限,授权API

 

五、创建超链接

views.py:    创建api_root方法,使用reverse

serializers.py    继承serializer.HyperlinkedModelSerializer类,此处添加URL时,不知道什么原因,会找不到 demo-detail报错:You may have failed to include the related model in you r API,此时应重写url参数:url = serializers.HyperlinkedIdentityField(view_name='blog:user-detail',) 在视图名内带上APP名称  ,

urls.py       为每个view的类带上name,方便查找,规范url

settings.py    REST_FRAMEWORK = { 'PAGE_SIZE': 10 }添加分页

六、使用ViewSets、router 来减少代码量

views.py:    继承viewsets,其他不变

urls.py:     可以手动绑定url和viewsets,也可以使用router,直接简便的绑定url。

原文地址:https://www.cnblogs.com/kkkboshow/p/9243778.html