Django-路由Routers-SimpleRouter-DefaultRouter的使用

路由Routers

对于视图集ViewSet,我们除了可以自己手动指明请求方式与动作action之间的对应关系外,还可以使用Routers来帮助我们快速实现路由信息。

REST framework提供了两个router

  • SimpleRouter
  • DefaultRouter

1. 使用方法

1) 创建router对象,并注册视图集,例如

from rest_framework import routers

router = routers.SimpleRouter()
router.register(r'books', BookInfoViewSet, base_name='book')

register(prefix, viewset, base_name)

  • prefix 该视图集的路由前缀
  • viewset 视图集
  • base_name 路由名称的前缀

如上述代码会形成的路由如下:

^books/$    name: book-list
^books/{pk}/$   name: book-detail

2)添加路由数据

可以有两种方式:

urlpatterns = [
    ...
]
urlpatterns += router.urls

urlpatterns = [
    ...
    url(r'^', include(router.urls))
]

2. 视图集中包含附加action的

class BookInfoViewSet(mixins.ListModelMixin, mixins.RetrieveModelMixin, GenericViewSet):
    queryset = BookInfo.objects.all()
    serializer_class = BookInfoSerializer

    @action(methods=['get'], detail=False)
    def latest(self, request):
        ...

    @action(methods=['put'], detail=True)
    def read(self, request, pk):
        ...

此视图集会形成的路由:

^books/latest/$    name: book-latest
^books/{pk}/read/$  name: book-read

3. 路由router形成URL的方式

1) SimpleRouter


2)DefaultRouter


DefaultRouter与SimpleRouter的区别是,DefaultRouter会多附带一个默认的API根视图,返回一个包含所有列表视图的超链接响应数据。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Django REST Framework 中创建一个新的应用程序,请按照以下步骤进行操作: 1. 在命令行中,使用以下命令创建一个新的 Django 应用程序: ``` python manage.py startapp myapp ``` 2. 在项目的 settings.py 文件中注册新的应用程序,将它添加到 INSTALLED_APPS 列表中: ``` INSTALLED_APPS = [ ... 'myapp', ] ``` 3. 在新的应用程序文件夹中,创建一个 serializers.py 文件来定义模型序列化器,例如: ```python from rest_framework import serializers from .models import MyModel class MyModelSerializer(serializers.ModelSerializer): class Meta: model = MyModel fields = '__all__' ``` 4. 在新的应用程序文件夹中,创建一个 views.py 文件来定义 API 视图,例如: ```python from rest_framework import viewsets from .models import MyModel from .serializers import MyModelSerializer class MyModelViewSet(viewsets.ModelViewSet): queryset = MyModel.objects.all() serializer_class = MyModelSerializer ``` 5. 在新的应用程序文件夹中,创建一个 urls.py 文件来定义应用程序路由,例如: ```python from django.urls import path, include from rest_framework import routers from .views import MyModelViewSet router = routers.DefaultRouter() router.register(r'mymodels', MyModelViewSet) urlpatterns = [ path('', include(router.urls)), ] ``` 6. 最后,在项目的 urls.py 文件中,将应用程序的路由添加到主路由中: ```python from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('api/', include('myapp.urls')), ] ``` 现在你可以通过访问 /api/mymodels 来查看你新创建的 API 视图。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值