Rest_Framework--routers

路由
可以通过路由as_view()传参 根据请求方式的不同执行对应不同的方法
在routers模块下 封装了很多关于路由的方法 , 最基础的BaseRouter类,给我提供自定制的接口。
 
rest_framework也为我们的url进行了优化,我们以前写的url还是有很大的代码重复性,
rest_framework 中的routers模块中DefaultRouter类中提供了方法,这个只能配合modelviewset使用,因为register只能 注册一个视图函数。
from django.conf.urls import url,include
from django.contrib import admin
from api_demo.views import BookViewSet,PublishViewSet,LoginViewset
from rest_framework import routers
router=routers.DefaultRouter() #生成router对象
router.register(r'books',BookViewSet) #这一句话就会生成books需要的所有的url
urlpatterns = [
    url(r'^',include(router.urls)), #引入include
    url(r'^admin/', admin.site.urls),
    # url(r'^books/$', BookViewSet.as_view({"get":"list","post":"create"})),
    # url(r'^books/(?P<pk>d+)/$',BookViewSet.as_view({"get":"retrieve","put":"update","patch":"partial_update",'delete': 'destroy'}),name="books"),
    
]
这个方法的对于超链接Hylink来说name属性已经变了,这时候,我们在序列化中设置hylink的时候view_name属性应该注意。我们来看一下
^ ^publishes/$ [name='publish-list']
^ ^publishes.(?P<format>[a-z0-9]+)/?$ [name='publish-list']
^ ^publishes/(?P<pk>[^/.]+)/$ [name='publish-detail']
^ ^publishes/(?P<pk>[^/.]+).(?P<format>[a-z0-9]+)/?$ [name='publish-detail']

原文地址:https://www.cnblogs.com/absoluteli/p/14129095.html