8. 路由系统

a. 自定义路由

  • 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())
]
  • 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('...')

b. 半自动路由

  • 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'})),
]
  • 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

c. 全自动路由

  • 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)),
]
  • 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

全自动路由默认生成以下字段

from rest_framework.routers import DefaultRouter
route = DefaultRouter()
route.register('xxxxx',views.RouteView) # get:list, post: create

# url(r'^xxxxx/', views.RouteView.as_view({'get':'list','post':'create'})),
# url(r'^xxxxx\.(?P<format>\w+)', views.RouteView.as_view({'get':'list','post':'create'})),
# url(r'^xxxxx/(?P<pk>\d+)', views.RouteView.as_view({'get':'retrieve','delete':'destroy','put':'update'})),
# url(r'^xxxxx/(?P<pk>\d+)\.(?P<format>\w+)', views.RouteView.as_view({'get':'retrieve','delete':'destroy','put':'update'})),
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 22年12月更新:个人网站关停,如果仍旧对旧教程有兴趣参考 Github 的markdown内容[https://...
    tangyefei阅读 35,304评论 22 257
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,800评论 19 139
  • 人,都会有心情不好的时候,说不上来的失落,道不明白的难过,理不清楚的交错。 ​ ​​​ ​​​​
    夕小阅读 864评论 0 0
  • 今天下午,爸爸带我跟壮哥去了太原动物园。到了动物园门口,真是人山人海。买票的人排成了长龙。等了十几分钟,爸...
    张佳艺阅读 5,158评论 0 2
  • 多年以来,过段时日就和她聊天,俨然成了一种惯性。 这次,我们聊毕业,聊工作,聊美国同性婚姻合法化。 当然还有爱情。...
    戴文子阅读 4,673评论 3 5