2017-04-06 89 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

相關問題