REST framework-通用视图[Generic views]

Django’s generic views… were developed as a shortcut for common usage patterns… They take certain common idioms and patterns found in view development and abstract them so that you can quickly write common views of data without having to repeat yourself.

基于类的视图的主要优点之一是它们允许您编写可重用行为的部分。REST框架通过提供许多预构建的视图来利用这一点,这些视图提供了常用的模式。
通过REST框架提供的通用视图,可以快速构建与数据库模型紧密映射的API视图。
如果泛型视图不适合自己的 API 的需求,可以使用常规类,或者重用泛型视图使用的 mixin 和基类来组合成一组可重用的泛型视图。

from django.contrib.auth.models import User
from myapp.serializers import UserSerializer
from rest_framework import generics
from rest_framework.permissions import IsAdminUser

class UserList(generics.ListCreateAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer
    permission_classes = [IsAdminUser]
#对于复杂的情况,可以重写视图类中的方法
class UserList(generics.ListCreateAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer
    permission_classes = [IsAdminUser]

    def list(self, request):
        # Note the use of `get_queryset()` instead of `self.queryset`
        queryset = self.get_queryset()
        serializer = UserSerializer(queryset, many=True)
        return Response(serializer.data)

GenericAPIView

1.提供了基础的操作和属性:

  • 支持查询集(queryset)的定义,用于指定要操作的数据集合。
  • 提供了序列化器类(serializer_class)的设置,用于数据的序列化和反序列化。

2.实现了常见的方法:

  • get_queryset():用于获取查询集。
  • get_object():用于获取单个对象。
  • lookup_field
  • lookup_url_kwarg
    3.支持分页:可以方便地设置分页类来处理大量数据的分页展示。(pagination_class)
    4.与其他扩展类结合:常与 ListCreateAPIView、RetrieveUpdateDestroyAPIView 等结合使用,快速实现常见的 CRUD 操作。
    5.过滤:filter_backends, 应用于过滤查询集的过滤器后端类的列表。默认为与设置相同的值
    示例代码:
from rest_framework.generics import GenericAPIView
from rest_framework import serializers
from myapp.models import MyModel
class MyModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = MyModel
        fields = '__all__'
class MyView(GenericAPIView):
    queryset = MyModel.objects.all()
    serializer_class = MyModelSerializer

    def get(self, request, *args, **kwargs)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白日与明月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值