• 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。

  • 相关阅读:
    Mysql性能优化之---(一)
    好好思考之(二)---介绍什么是思维模型,分析它的本质内涵
    好好思考-----概述(一)
    oracle 的安装 及环境的配置...
    数据结构中的树
    生成SSH秘钥连接github(详细教程)
    后端 SpringBoot + 前端 vue 打包发布到Tomcat
    vue 轮播图
    vue文字向上滚动
    数组去重
  • 原文地址:https://www.cnblogs.com/kkkboshow/p/9243778.html
Copyright © 2020-2023  润新知