欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

django-drf框架自带的路由以及最简化的视图

程序员文章站 2022-07-09 20:40:04
0910自我总结 django drf框架自带的路由以及最简化的视图 路由 一.导入模块 二.初始化路由对象 三.创建路由 其效果等同于 视图 一.导入模块 二.创建视图逻辑 ......

0910自我总结

django-drf框架自带的路由以及最简化的视图

路由

一.导入模块

from rest_framework.routers import simplerouter

二.初始化路由对象

router = simplerouter()

三.创建路由

router = simplerouter()
# 注册各种接口路由
router.register('cars', views.carmodelviewset, base_name='car')
#car为链接的开头,views.carmodelviewset为当路由为cars的时候的调用的函数
urlpatterns = []
urlpatterns.extend(router.urls)

其效果等同于

urlpatterns = [
    url(r'^cars/$', views.carmodelviewset.as_view()),
    url(r'^cars/(?p<pk>.*)/$', views.carmodelviewset.as_view()),
]

视图

一.导入模块

from rest_framework.viewsets import modelviewset

二.创建视图逻辑

modelviewset源码

class modelviewset(mixins.createmodelmixin,
                   mixins.retrievemodelmixin,
                   mixins.updatemodelmixin,
                   mixins.destroymodelmixin,
                   mixins.listmodelmixin,
                   genericviewset):
    #所有他当中以及对于get等等的方法自动进行了封装
mixins是在generics再进行方法的分装成5个方法
retrievemodelmixin:retrieve 单取
listmodelmixin:list 群取
createmodelmixin:create 单增
updatemodelmixin:update 单整体改
updatemodelmixin: partial_update 单局部改
destroymodelmixin:destroy 单删
class carmodelviewset(modelviewset):
    queryset = models.car.objects.filter(is_delete=false) 
    serializer_class = serializers.carmodelserializer
    ........
    #queryset serializer_class 必须给与
    ...
    def get(self):
        他会调用retrieve或者list方法其他也类似
        .....