美文网首页
8. 路由系统

8. 路由系统

作者: lkning | 来源:发表于2018-01-24 23:05 被阅读0次

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

相关文章

  • 8. 路由系统

    a. 自定义路由 urls.py views.py b. 半自动路由 urls.py views.py c. 全自...

  • 8. 路由

    1. 注册路由 在文件 app.module.ts 增加1个路由 使用routerLink 指令定义链接 rou...

  • Tornado框架03-路由系统

    在Tornado中支持两种路由系统, 正则路由系统以及二级域名路由系统. (r"/index/(?P \d*)",...

  • Linux 路由配置、SSH相关

    1、LInux 主机路添加路由信息 1.1Linux系统路由配置永久生效1)、linux系统路由配置———>永久开...

  • Django drf 路由系统

    路由系统 路由系统可以自动完成增删改查,如果只是增删就不太需要引用

  • Flask之路由管理

    # Flask 路由系统 # ## ## 方法一:使用系统路由,在app.py中有个例子 ## ## @app.r...

  • 后端人员常用的插件库

    前端组件库 搭建web app常用的样式/组件等收集列表(移动优先) 8. 路由和链接(Routing And U...

  • 路由系统

    restful api中method的使用: 因此我们通常需要两种路由规则来匹配url中有无ID传入: djang...

  • 基于Django实现

    路由系统: CBV视图:

  • Django框架路由系统

    路由系统(controller) 路由系统(URL配置)它就是URL与要为该URL调用的视图函数之间的映射表,也就...

网友评论

      本文标题:8. 路由系统

      本文链接:https://www.haomeiwen.com/subject/drfpaxtx.html