我使用django REST框架。 在我的views.py中有一个类:
class TaskViewSet(viewsets.ModelViewSet):
queryset = Task.objects.all().order_by('-date_created')
serializer_class = TaskSerializer
print("leo test in TaskViewSet")
我想在每次调用url时打印("在TaskViewSet&#34中进行leo测试;)。
但它只会在我使用runserver cmd后打印一次。
每次调用api url时,任何人都知道如何打印("在TaskViewSet&#34中进行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 :(得分:2)
您必须定义操作才能获得所需的行为。默认情况下,您定义的路由器绑定到多个操作,如创建,检索,列表,更新和销毁。因此,当您通过以下方法实现这些操作时,您将能够在每个端点调用上打印。
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