zoukankan      html  css  js  c++  java
  • django-rest-framework学习之Requests and Responses--2017年4月13日

    Requests and Responses ---- REST framework的核心
    【1】Request objects
    HttpRequest 核心功能是request.data获取请求的主体 (类似request.POST )
    requests.data #适用各种数据,可以用于POST PUT和PATCH方法
    【2】Response objects
    return Response(data) #给与客户端请求的内容类型
    【3】Status codes
    REST framework 为每个状态码提供了明确清晰的标识符,例如HTTP_400_BAD_REQUEST
    【4】Wrapping(封装) API views
    APIView 类基础视图
    @api_view()函数基础视图
    【5】实施
    from rest_framework import status
    from rest_framework.decorators import api_view
    from rest_framework.response import Response
    from myLesson.models import MyLesson
    from myLesson.serializers import MyLessonSerializer
     
    @api_view(['GET','POST'])
    def MyLesson_list(request,format=None):
        """
        List all MyLesson,or create a new MyLesson   
        """
        if request.method == 'GET':
            myLesson = MyLesson.objects.all()
            serializer = MyLessonSerializer(myLesson,many=True)
            return Response(serializer.data)
     
        elif request.method == 'POST':
            serializer = MyLessonSerializer(data=request.data)
            if serializer.is_valid():
                serializer.save()
                return Response(serializer.data,status=status.HTTP_201_CREATED)
            return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)
     
    @api_view(['GET','PUT','DELETE'])
    def MyLesson_detail(request,pk,format=None):
        """
        Retrieve,update or delete a myLesson instance
        """
        try:
            myLesson = MyLesson.objects.get(pk=pk)
        except MyLesson.DoesNotExit:
            return Response(status=status.HTTP_404_NOT_FOUND)
     
        if request.method == 'GET':
            serializer = MyLessonSerializer(myLesson)
            return Response(serializer.data)
     
        elif request.method == 'PUT':
            serializer = MyLessonSerializer(myLesson,data=request.data)
            if serializer.is_valid():
                serializer.save()
                return Response(serializer.data)
            return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)
     
        elif request.method == 'DELETE':
            myLesson.detele()
            return Response(status=status.HTTP_204_NO_CONTENT)
     
     
    #views.py
    def MyLesson_list(request, format=None):
    def MyLesson_detail(request, pk, format=None):
     
    #urls.py
    from rest_framework.urlpatterns import format_suffix_patterns
    urlpatterns = format_suffix_patterns(urlpatterns)
     
    我们可以用Accept header来控制Response的格式
     
    http http://127.0.0.1:8000/snippets/ Accept:application/json  # Request JSON
    http http://127.0.0.1:8000/snippets/ Accept:text/html         # Request HTML
     
    或者加一个格式后缀
     
    http http://127.0.0.1:8000/snippets.json  # JSON suffix
    http http://127.0.0.1:8000/snippets.api 
  • 相关阅读:
    away3d 4.1 alpha 教程 换装篇 <3> 人物动态换装DEMO
    书本资料汇总
    洪小瑶学IOS(一):准备起航 <ObjectiveC基础教程>笔记
    Flex 4 权威指南 学习笔记
    通过存储过程建立灵活的SQL计划任务
    javascript 未结束的字符串常量
    SQL重复记录查询
    重置数据库自增字段
    C#获取周一、周日的日期 函数类
    C# ,ASP.NET,Winform将数据导出到Execl汇总
  • 原文地址:https://www.cnblogs.com/jingbostar/p/6705492.html
Copyright © 2011-2022 走看看