Django-Rest frameworw之路由系统

路由系统

============******============

                        一、 自定义路由

                        二、 半自动路由

                        三、 全自动路由

============******============

路由系统包含的类:

class ViewSetMixin(object): # 重写as_view方法 支持as_view({'get':'get','post':'add'})
	pass

class ViewSet(ViewSetMixin, views.APIView): # 
	pass  

class GenericViewSet(ViewSetMixin, generics.GenericAPIView):
	pass

class ModelViewSet(mixins.CreateModelMixin,
                   mixins.RetrieveModelMixin,
                   mixins.UpdateModelMixin,
                   mixins.DestroyModelMixin,
                   mixins.ListModelMixin,
                   GenericViewSet): #对数据进行操作
    pass 


路由系统示例展示

一、 自定义路由

in urls.py
	from django.conf.urls import url, include
	from web.views import s11_render

	urlpatterns = [
	    url(r'^test/$', s11_render.TestView.as_view()),
	    url(r'^test\.(?P<format>[a-z0-9]+)$', s11_render.TestView.as_view()),
	    url(r'^test/(?P<pk>[^/.]+)/$', s11_render.TestView.as_view()),
	    url(r'^test/(?P<pk>[^/.]+)\.(?P<format>[a-z0-9]+)$', s11_render.TestView.as_view())
	]

in views.py
	from rest_framework.views import APIView
	from rest_framework.response import Response
	from .. import models


	class TestView(APIView):
	    def get(self, request, *args, **kwargs):
	        print(kwargs)
	        print(self.renderer_classes)
	        return Response('...')

二、 半自动路由

in urls.py
	from django.conf.urls import url, include
        from web.views import s10_generic
	urlpatterns = [
	    url(r'^test/$', s10_generic.UserViewSet.as_view({'get': 'list', 'post': 'create'})),
	    url(r'^test/(?P<pk>\d+)/$', s10_generic.UserViewSet.as_view(
	        {'get': 'retrieve', 'put': 'update', 'patch': 'partial_update', 'delete': 'destroy'})),
	]
in views.py
	#!/usr/bin/env python
	# -*- coding:utf-8 -*-
	from rest_framework.viewsets import ModelViewSet
	from rest_framework import serializers
	from .. import models

	class UserSerializer(serializers.ModelSerializer):
	    class Meta:
	        model = models.UserInfo
	        fields = "__all__"

	class UserViewSet(ModelViewSet):
	    queryset = models.UserInfo.objects.all()
	    serializer_class = UserSerializer

三、 全自动路由

in urls.py
	from django.conf.urls import url, include
	from rest_framework import routers
	from web.views import s10_generic

	router = routers.DefaultRouter()
	router.register(r'users', s10_generic.UserViewSet)

	urlpatterns = [
	    url(r'^', include(router.urls)),
	]
in views.py
	from rest_framework.viewsets import ModelViewSet
	from rest_framework import serializers
	from .. import models

	class UserSerializer(serializers.ModelSerializer):
	    class Meta:
	        model = models.UserInfo
	        fields = "__all__"

	class UserViewSet(ModelViewSet):
	    queryset = models.UserInfo.objects.all()
	    serializer_class = UserSerializer

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值