美文网首页
路由系统

路由系统

作者: 马小跳_ | 来源:发表于2018-02-08 15:44 被阅读10次

restful api中method的使用:

增
    POST  /users/  # 新增一个用户
删
    DELETE  /users/1  # 删除一个用户
改
    PUT  /users/1/  # 全部修改
    patch  /users/1/  # 局部修改
查
    get  /users/  # 用户列表
        /users/1/  # 单个用户

因此我们通常需要两种路由规则来匹配url中有无ID传入:

urlpatterns = [
    url(r'^users/$', views.TestView.as_view()),  # http://127.0.0.1:8000/users/
    url(r'^users/(?P<pk>\d+)/$', views.TestView.as_view()),  # http://127.0.0.1:8000/users/1/  
]

django-restframework中又添加了两种规则,方便我们决定在页面上显示哪种格式的数据:

urlpatterns = [
    # http://127.0.0.1:8000/api/v1/test/
    url(r'^test/$', s11_render.TestView.as_view()),
    
    # http://127.0.0.1:8000/api/v1/test.json/  页面显示json格式
    url(r'^test\.(?P<format>[a-z0-9]+)$', s11_render.TestView.as_view()),
    
    # http://127.0.0.1:8000/api/v1/test/1/  
    url(r'^test/(?P<pk>[^/.]+)/$', s11_render.TestView.as_view()),
    
    # http://127.0.0.1:8000/api/v1/test/1.json/  页面显示json格式
    url(r'^test/(?P<pk>[^/.]+)\.(?P<format>[a-z0-9]+)$', s11_render.TestView.as_view())
]

使用

自定义路由系统

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

半自动路由

urls.py

from django.conf.urls import url, include
from web.views import s10_generic

"""
在路由中做method与处理视图函数的映射
get 
    - /test/  - list  获取多个
    - /test/1/  - retrieve  获取单个
post
    - /test/  - create  新增
put
    - /test/1/  - update  全部修改
patch
    - /test/1/  - partial_update  局部修改
delete
    - /test/1/  - destroy 删除
"""

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

全自动路由

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)  # 自动生成匹配规则
"""
在路由中做method与处理视图函数的映射
get 
    - /test/  - list  获取多个
    - /test/1/  - retrieve  获取单个
post
    - /test/  - create  新增
put
    - /test/1/  - update  全部修改
patch
    - /test/1/  - partial_update  局部修改
delete
    - /test/1/  - destroy 删除
"""

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

相关文章

  • Tornado框架03-路由系统

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

  • Linux 路由配置、SSH相关

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

  • Django drf 路由系统

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

  • Flask之路由管理

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

  • 路由系统

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

  • 基于Django实现

    路由系统: CBV视图:

  • Django框架路由系统

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

  • BGP原理综述

    简介 定义 是一种实现在自治系统之间传输路由,并选择最佳路由选路的一种距离矢量路由协议。 目的 用来在不通自治系统...

  • [转]React Native 的路由架构分享以及配套神器推荐

    搭建路由系统推荐使用 react-navigation 这个官方推荐的组件,该组件有三种导航(路由)系统: 栈导航...

  • 快速页面demo搭建

    1,搭建路由 系统路由配置文件分五种视角及五个路由文件(eg:@/src/router/normalUserRou...

网友评论

      本文标题:路由系统

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