首页 > 其他 > 详细

django-rest-framework学习之Requests and Responses--2017年4月13日

时间:2017-04-13 19:10:14      阅读:245      评论:0      收藏:0      [点我收藏+]
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 snippet_list(request, format=None):
def snippet_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 

django-rest-framework学习之Requests and Responses--2017年4月13日

原文:http://www.cnblogs.com/jingbostar/p/6705492.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!