In the Django-Rest-Framework API, I can not use post for testing, I don't know why there is no the post fields.
My View:
class WHMCSPhysicalServerIPMIManagementAPIView(APIView): serializer_class = WHMCSPhysicalServerIPMIManageSerializer permission_classes = [IsAdminUser] def post(self, request):""" :param request: action: physical_server_name: :return:""" try: physical_server_name = request.query_params.get('physical_server_name') action = request.query_params.get('action') if not physical_server_name or not action: return Response(data="invalid request data", status=HTTP_400_BAD_REQUEST) physical_server = PhysicalServer.objects.get(name=physical_server_name) msg = ipmi_management_handler({'action': action, 'physical_server_id': physical_server.id}) return Response(data=msg, status=HTTP_200_OK) except Exception as e: return_data = "fail" if e.args == () else e.args[0] return Response(data=return_data, status=HTTP_200_OK)
My serializers:
class WHMCSPhysicalServerIPMIManageSerializer(Serializer): physical_server_name = serializers.IntegerField(write_only=True) action = serializers.CharField(write_only=True) whmcs_user_id = serializers.IntegerField(write_only=True)
My url:
urlpatterns = [ url(r'^whmcs/physicalserver/ipmi_management/$', WHMCSPhysicalServerIPMIManagementAPIView.as_view(), name='whmcs-physicalserver-ipmi_management'),]