Django and DRF CBV 视图类

2 篇文章 0 订阅
class View(object):
	这是 Django 原生的视图类,会根据 http 请求的方法,执行相应的函数
	

以下的类都是来自 django rest framework:
class APIView(View):
	比 View 多定义了认证类、权限类、节流类等
	
class GenericAPIView(views.APIView):
	仅仅是比 APIView 多定了如下类变量: queryset   serializer_class   pagination_class 
	和一些使用这些类变量的方法 get_object  get_serializer  get_serializer_class  paginate_queryset 等
    实际上并不比 APIView 先进多少
	
	url(r'^publishes/$', views.PublishView.as_view()),
	url(r'^publishes/(?P<pk>\d+)/$', views.PublishDetailView.as_view()),
	
class GenericViewSet(ViewSetMixin, generics.GenericAPIView):
	主要进步的地方在其父类 ViewSetMixin 重写了 as_view 方法,
	同时就需要在写路由时的  .as_view() 的参数中 加上 {'get':'list', 'post':'creat'}
	结论:只要视图类继承了 GenericViewSet 或 其子类,就需要在写路由时给 as_view函数指定参数
class ModelViewSet(mixins.CreateModelMixin,
               mixins.RetrieveModelMixin,
               mixins.UpdateModelMixin,
               mixins.DestroyModelMixin,
               mixins.ListModelMixin,
               GenericViewSet):
	比 GenericViewSet 进步的意义是继承了好多个 minin , 可以天然的避开一个model表分成两个视图的问题
	url(r'^books/$', views.BookViewSet.as_view({"get":"list","post":"create"}),name="book_list"),
	url(r'^books/(?P<pk>\d+)$', views.BookViewSet.as_view({'get': 'retrieve', 'put': 'update', 
														   'patch': 'partial_update', 'delete': 'destroy'}),name="book_detail"),
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django中使用DRFDjango Rest Framework)需要进行以下配置: 1. 安装DRF 可以通过pip安装DRF,命令如下: ``` pip install djangorestframework ``` 2. 在INSTALLED_APPS中添加'rest_framework' 在settings.py中的INSTALLED_APPS列表中添加'rest_framework',如下所示: ``` INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'myapp', ] ``` 3. 配置REST_FRAMEWORK设置 在settings.py中添加REST_FRAMEWORK设置,以配置DRF的一些选项,如下所示: ``` REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': [ 'rest_framework.authentication.SessionAuthentication', 'rest_framework.authentication.BasicAuthentication', ], 'DEFAULT_PERMISSION_CLASSES': [ 'rest_framework.permissions.IsAuthenticated', ], 'DEFAULT_RENDERER_CLASSES': [ 'rest_framework.renderers.JSONRenderer', 'rest_framework.renderers.BrowsableAPIRenderer', ], } ``` 以上设置包括了DRF中的默认身份验证、默认权限和默认渲染器。可以根据需要进行修改。 4. 创建序列化器 在myapp中创建一个serializers.py文件,定义一个序列化器,如下所示: ``` from rest_framework import serializers from myapp.models import MyModel class MyModelSerializer(serializers.ModelSerializer): class Meta: model = MyModel fields = '__all__' ``` 5. 创建视图 在myapp中创建一个views.py文件,定义一个视图,如下所示: ``` from rest_framework import generics from myapp.models import MyModel from myapp.serializers import MyModelSerializer class MyModelList(generics.ListCreateAPIView): queryset = MyModel.objects.all() serializer_class = MyModelSerializer ``` 以上视图继承了DRF提供的generics.ListCreateAPIView,用于实现查询和创建操作。可以根据需要进行修改。 6. 创建URL 在myapp中的urls.py文件中定义一个URL,将视图和URL绑定在一起,如下所示: ``` from django.urls import path from myapp.views import MyModelList urlpatterns = [ path('mymodel/', MyModelList.as_view(), name='mymodel-list'), ] ``` 以上是Django使用DRF的基本配置。可以根据项目需求进行调整和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值