我真的不適合測驗。實際上,我不知道如何撰寫測驗 url 以獲取視圖集的回應。這是我的看法,
class AppraisalAPI(viewsets.ReadOnlyModelViewSet):
queryset = Appraisal.objects.all().order_by('-id')
serializer_class = AppraisalSerializer
def get_permissions(self):
if self.action in ['retrieve']:
self.permission_classes = [IsHRUser | IsManagementUser]
elif self.action in ['list']:
self.permission_classes = [IsUser]
return super(self.__class__, self).get_permissions()
def retrieve(self, request, *args, **kwargs):
instance = self.get_object()
data = instance.summary()
return Response(data)
這是我的 urls.py,
router = routers.DefaultRouter()
router.register('appraisal', AppraisalAPI)
urlpatterns = [
path('', include(router.urls)),
]
這是我的測驗功能,
def test_appraisal_api_readonly(self):
url = reverse('appraisal-list')
self.client = Client(HTTP_AUTHORIZATION='Token ' token.key)
resp1 = self.client.get(url, format='json')
self.assertEqual(resp1.status_code, 200)
此測驗 url 僅進入串列操作。當我提供詳細資訊而不是串列時,它只會檢索動作。在這里,我想獲得 Retrive 函式回應,獲得許可后如何獲得我想接收 Retrive 函式回應。Anyhelp 可觀的,..
uj5u.com熱心網友回復:
由于您使用DefaultRouter,因此您可以使用 觸發retrieve操作appraisal-detail,并使用物件的主鍵,因此:
def test_appraisal_api_readonly(self):
url = reverse('appraisal-detail', kwargs={'pk': some_pk})
self.client = Client(HTTP_AUTHORIZATION='Token ' token.key)
resp1 = self.client.get(url, format='json')
self.assertEqual(resp1.status_code, 200)
使用您在測驗中構建的某些專案some_pk的主鍵 ( .pk)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/407218.html
標籤:
