2017-04-06 70 views
0

我使用django REST框架。 在我views.py有一个类:如何在使用django REST框架时打印某些内容?

class TaskViewSet(viewsets.ModelViewSet): 

    queryset = Task.objects.all().order_by('-date_created') 
    serializer_class = TaskSerializer 
    print("leo test in TaskViewSet") 

我想,当我每次调用的URL打印(“在TaskViewSet LEO测试”)。

但是,在我使用runserver cmd后它只会打印1次。

每次我打电话给api url时,任何人都知道如何打印(“TaskViewSet中的leo测试”)。

我的urls.py:

from django.conf.urls import url,include 
from django.contrib import admin 
from rest_framework import routers 
from trips.views import TaskViewSet 


router = routers.DefaultRouter() 
router.register(r'task',TaskViewSet) 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    #url(r'^$', hello_world), 
    url(r'^', include(router.urls)), 
] 

非常感谢你。

+0

如果您使用基于类的视图,您需要在这些类中使用get/post/put/delete方法。然后,您需要将打印添加到方法中。现在只有在服务器启动时才会调用类innitialization时调用它。 http://www.django-rest-framework.org/api-guide/views/ – giaco

回答

1

您必须定义操作才能获得所需的行为。默认情况下,你已经定义的路由器绑定到几个动作,如创建,检索,列表,更新和销毁。因此,当您通过以下方法实施这些操作时,您将能够在每个端点呼叫上进行打印。

class TaskViewSet(viewsets.ModelViewSet): 

    queryset = Task.objects.all().order_by('-date_created') 
    serializer_class = TaskSerializer 
    print("leo test in TaskViewSet") 

    def list(self, request): 
     print("leo test in TaskViewSet") 
     return Response("leo test in TaskViewSet", status=status.HTTP_404_NOT_FOUND) 

    def create(self, request): 
     print("leo test in TaskViewSet") 
     return Response("leo test in TaskViewSet", status=status.HTTP_404_NOT_FOUND) 


    def retrieve(self, request, pk=None): 
     print("leo test in TaskViewSet") 
     return Response("leo test in TaskViewSet", status=status.HTTP_404_NOT_FOUND) 


    def update(self, request, pk=None): 
     print("leo test in TaskViewSet") 
     return Response("leo test in TaskViewSet", status=status.HTTP_404_NOT_FOUND) 


    def partial_update(self, request, pk=None): 
     print("leo test in TaskViewSet") 
     return Response("leo test in TaskViewSet", status=status.HTTP_404_NOT_FOUND) 


    def destroy(self, request, pk=None): 
     print("leo test in TaskViewSet") 
     return Response("leo test in TaskViewSet", status=status.HTTP_404_NOT_FOUND) 

让我知道是否有什么不清楚。也请在这里阅读更多详细信息http://www.django-rest-framework.org/api-guide/viewsets/#marking-extra-actions-for-routing

相关问题