Django后端开发入门-Task05:路由组件与自定义函数

P12 Django-DRF(路由组件):告别繁琐的URL配置

大家好,今天我们要一起学习 Django REST framework(DRF)中的一个强大工具——DefaultRouter,它是如何帮助我们简化URL路由配置的。

什么是DefaultRouter

首先,让我们来了解一下,什么是DefaultRouter。在DRF中,路由器是一种将URL与视图函数或视图集关联起来的机制。而DefaultRouter是DRF中提供的一个路由器类,它的作用就是自动生成URL路由。

为什么需要它呢?在Web应用开发中,我们经常需要定义各种URL,让它们与后端的视图函数或视图集相对应。手动编写这些URL路由是一项繁琐的工作,容易出错。DefaultRouter的出现解决了这个问题,它通过简单的配置就能够自动生成标准的URL路由,从而减少了手动配置的工作量。

如何使用DefaultRouter

那么,如何使用DefaultRouter呢?让我们通过一个示例来了解。

# urls.py

from django.contrib import admin
from django.urls import path
from apps.erp_test.views import *
from rest_framework import routers

# 创建一个DefaultRouter对象
router = routers.DefaultRouter()
# 注册视图集,并为其生成URL路由
router.register('GoodsCategory', GoodsCategoryViewSet)

urlpatterns = [
    path('admin/', admin.site.urls),
    path('filtergoodscategory/', FilterGoodsCategory),
    path('insertgoodscategory/', InsertGoodsCategory),
    path('filtergoodscategoryapi/', FilterGoodsCategoryAPI.as_view()),
    path('getgoods/', GetGoods.as_view()),
]

# 将自动生成的URL路由添加到urlpatterns中
urlpatterns += router.urls

在这个示例中,我们首先导入了routers.DefaultRouter,然后创建了一个DefaultRouter对象,接着使用router.register()方法注册了一个视图集,即GoodsCategoryViewSet。这样,DefaultRouter就会自动为GoodsCategoryViewSet生成对应的URL路由,并将它们添加到urlpatterns中。

不需要手动一个一个地配置URL,是不是很方便?而且,这些自动生成的URL路由都是标准的,遵循了最佳实践,确保了代码的一致性和可维护性。

总结

DefaultRouter是DRF中的一个强大工具,它可以帮助我们摆脱繁琐的URL配置,让我们更专注于开发具体的业务逻辑。通过合理地使用DefaultRouter,我们可以提高开发效率,减少出错的可能性,是Web应用开发更加轻松愉快。

希望这篇博客能够帮助你更好地理解DefaultRouter的使用方法,欢迎继续探索DRF的更多功能!

P13 Django-DRF 自定义函数:为你的API添加自定义操作

大家好!在之前的学习中,我们已经掌握了如何使用Django REST Framework(DRF)来构建常规的CRUD(Create, Read, Update, Delete)操作,但有时候我们需要在API中添加一些特殊的自定义操作,这就是今天要介绍的内容——自定义函数和@action装饰器。

什么是自定义函数?

在API中,有时我们需要实现一些不属于标准CRUD操作的功能,比如从一组资源中获取最新的资源,或者执行某些特殊的业务逻辑。这就是自定义函数的用武之地。自定义函数是你根据需求编写的,不必局限于标准操作,可以根据具体情况进行扩展。

使用@action装饰器

要在DRF中使用自定义函数,我们可以使用@action装饰器。这个装饰器可以将自定义函数转化为视图集的一个动作。下面是如何使用它的示例:

from rest_framework.decorators import action

class GoodsCategoryViewSet(ModelViewSet):
    queryset = GoodsCategory.objects.all()
    serializer_class = GoodsCategorySerializer

    @action(detail=False, methods=['get'])
    def latest(self, request):
        latest_obj = GoodsCategory.objects.latest('id')
        print(latest_obj)
        return Response("你调用了自定义的函数")

在上述示例中,我们首先导入了@action装饰器。然后,我们在GoodsCategoryViewSet视图集中定义了一个名为latest的自定义函数。这个函数使用@action装饰器标记,并指定了一些选项。

  • detail=False表示这个动作不需要处理单个对象,而是整个集合。
  • methods=['get']指定了这个动作可以响应GET请求。

最后,我们在函数内部编写了自定义逻辑。在这个示例中,函数做的事情是获取最新的GoodsCategory对象,并返回一个简单的消息作为响应。

总结

自定义函数和@action装饰器为我们提供了在API中添加特殊操作的灵活性。无论是执行特殊的业务逻辑还是为API增加额外的功能,这些工具都可以帮助我们实现。通过熟练运用它们,我们可以更好地满足项目需求,构建功能更加丰富的API。

希望这篇博客对你理解DRF中的自定义函数和@action装饰器有所帮助!继续学习,构建强大的API!

猜你喜欢

转载自blog.csdn.net/qq_42859625/article/details/132406667