REST framework提供了一个APIView类,它是Django的View类的子类。
APIView类和一般的View类有以下不同:
- 被传入到处理方法的请求不会是Django的HttpRequest类的实例,而是REST framework的Request类的实例。
- 处理方法可以返回REST framework的Response,而不是Django的HttpRequest。视图会管理内容协议,给响应设置正确的渲染器。
- 任何异常情况都将被捕获并调解为适当的响应。APIException
- 在将请求分派给处理程序方法之前,将对传入的请求进行身份验证,并运行适当的权限和/或限制检查。
使用APIView类和使用一般的View类非常相似,通常,进入的请求会被分发到合适处理方法比如.get(),或者.post。
此外,可以在类上设置许多属性,这些属性控制 API 策略的各个方面。
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import authentication, permissions
from django.contrib.auth.models import User
class ListUser(APIView):
authentication_classes = [authentication.TokenAuthentication]
permission_classes = [permissions.IsAdminUser]
def get(self, request, format=None):
"""
Return a list of all users.
"""
usernames = [user.username for user in User.objects.all()]
return Response(usernames)
基于函数的视图:
REST框架还允许您使用基于常规函数的视图。它提供了一组简单的装饰器,这些装饰器包装了基于函数的视图,以确保它们接收到(而不是通常的 Django )的实例,并允许它们返回(而不是 Django ),并允许您配置如何处理请求。
@api_view()
signature: @api_view(http_method_names=[‘GET’])
demo:
from rest_framework.