zoukankan      html  css  js  c++  java
  • Django RESTFrame 路由问题

    路由分为3中:

      a. 自定义路由

      b. 半自动路由

      c. 全自动路由

    1.自定义路由

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

    views.py

     1 from rest_framework.views import APIView
     2 from rest_framework.response import Response
     3 from .. import models
     4 
     5 
     6 class TestView(APIView):
     7     def get(self, request, *args, **kwargs):
     8         print(kwargs)
     9         print(self.renderer_classes)
    10         return Response('...')

    2.半自动路由

    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'})),   # 各个请求,对应view类中,要执行的方法
    ]

    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

    3.全自动路由

    urls.py

    from django.conf.urls import url,include
    
    from rest_framework import routers   # 用于全自动路由的类
    router = routers.DefaultRouter()       # 用于全自动路由
    router.register(r'test', pagination.TestView,base_name='my_test')
    
    
    urlpatterns = [
        url(r'^', include(router.urls),
    ]

    views.py

     1 from rest_framework.viewsets import ModelViewSet
     2 from rest_framework import serializers
     3 from .. import models
     4 
     5 
     6 class UserSerializer(serializers.ModelSerializer):
     7     class Meta:
     8         model = models.User
     9         fields = "__all__"
    10 
    11 # 在这里指定数据库的类、以及序列化的类之后,就能自动存取数据了
    12 # 执行get方法,就自动取到数据
    13 # 执行post,就能向当前model表存入数据
    14 class TestView(ModelViewSet):
    15     queryset = models.User.objects.all()
    16     serializer_class = UserSerializer
  • 相关阅读:
    探究Google力推的JetPack库<五>---------WorkManager
    探究Google力推的JetPack库<四>---------Navigation、Paging
    探究Google力推的JetPack库<一>---------Lifecycles、LiveData、ViewModel、手写LiveDataBus
    探究Google力推的JetPack库<二>---------用官方Data Binding来构建MVVM架构、集成Lifecycles完善MVP框架
    MVC->MVP->MVVM架构完整演变过程剖析
    返回多个值的摘要函数
    接受一个原子向量并返回一个列表的所有的函数
    简并碱基代码
    clustalX2使用以及相关的问题
    Word中不能加载EndNote怎么办
  • 原文地址:https://www.cnblogs.com/fengqing89/p/8513235.html
Copyright © 2011-2022 走看看