8.|8. 路由系统
a. 自定义路由
- urls.py
from django.conf.urls import url, include
from web.views import s11_renderurlpatterns = [
url(r'^test/$', s11_render.TestView.as_view()),
url(r'^test\.(?P[a-z0-9]+)$', s11_render.TestView.as_view()),
url(r'^test/(?P[^/.]+)/$', s11_render.TestView.as_view()),
url(r'^test/(?P[^/.]+)\.(?P[a-z0-9]+)$', s11_render.TestView.as_view())
]
- views.py
from rest_framework.views import APIView
from rest_framework.response import Response
from .. import modelsclass 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_genericurlpatterns = [
url(r'^test/$', s10_generic.UserViewSet.as_view({'get': 'list', 'post': 'create'})),
url(r'^test/(?P\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 modelsclass 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_genericrouter = 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 modelsclass 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\w+)', views.RouteView.as_view({'get':'list','post':'create'})),
# url(r'^xxxxx/(?P【8.|8. 路由系统】\d+)', views.RouteView.as_view({'get':'retrieve','delete':'destroy','put':'update'})),
# url(r'^xxxxx/(?P\d+)\.(?P\w+)', views.RouteView.as_view({'get':'retrieve','delete':'destroy','put':'update'})),
推荐阅读
- SpringBoot调用公共模块的自定义注解失效的解决
- python自定义封装带颜色的logging模块
- 如何在Mac中的文件选择框中打开系统隐藏文件夹
- 单点登陆
- 列出所有自定义的function和view
- 操作系统|[译]从内部了解现代浏览器(1)
- 游乐园系统,助力游乐园管理
- 中国MES系统软件随工业化成长
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- Cesium|Cesium 粒子系统学习