【问题标题】:Call simple function with Route Python Django使用 Route Python Django 调用简单函数
【发布时间】:2020-12-21 09:26:48
【问题描述】:

这是一个简单的问题,但我想了解它。

我在 django rest 框架中有一个简单的 api rest

router = routers.DefaultRouter()
router.register(r'productos', ChelaViewSet)

这给了我模型中的数据 json,它工作正常。

类 ChelaViewSet:

class ChelaViewSet(viewsets.ModelViewSet):
serializer_class = ChelaSerializer
queryset = Chela.objects.all()

我只想从我的路由中调用一个具有简单功能的类,例如“hello world”,当我将 URL 打印“Hello world”放在控制台中时,不再需要查询集等......

我能做什么?

【问题讨论】:

    标签: python django django-rest-framework routes django-queryset


    【解决方案1】:

    你必须覆盖ModelViewSet 的任何方法,你想打印一些东西以供使用。

    来自docs

    ModelViewSet 类提供的操作是.list().retrieve().create().update().partial_update().destroy()

    所以如果你想print list 视图的东西,你可以这样做:

    class ChelaViewSet(viewsets.ModelViewSet):
      serializer_class = ChelaSerializer
      queryset = Chela.objects.all()
    
      def list(self, request, *args, **kwargs):
        print("hello")
        # Call the original list method from ModelViewSet
        return super().list(request, *args, **kwargs)
    

    This 也是一个方便的网站,您可以使用它来检查 DRF 的视图和序列化程序的代码。

    【讨论】:

    • 哇,它有效,你!但是...我可以在没有派生的类中通过路由调用函数吗?我的意思是... class ChelaViewSet(): 仅带打印。没有查询集,简单的类。
    • 不,如果你只是在类定义中放了一个print 语句,它会在类定义的时候被调用。如果您希望在运行路由时调用 print,则需要将其放入方法中,并且需要重写该类。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-10
    相关资源
    最近更新 更多