Hola a todos, pues estoy creando una API con Django Rest Framework y me encuentro en la casuistica de que necesitaria crear un endpoint donde poder enviar un json que contiene un array de items.
La idea es que en el backend antes de guardar el nuevo array, se haga un borrado completo de los datos anteriores que hay en la base de datos, pero estoy teniendo dificultades para conseguirlo.
urls.py
urlpatterns= [
...
path('api/v1/dhcphosts-uall/',csrf_exempt(DHCPHostUpdateAll)
]
serializers.py
class DHCPHostSerializer(serializers.ModelSerializer):
class Meta:
model = DHCPHost
fields = ('__all__')
views.py
class DHCPHostUpdateAll(viewsets.ModelViewSet):
serializer_class = DHCPHostSerializer
def post(self,request):
data = self.request.data
if isinstance(data,list):
serializer = self.get_serializer(data=self.request.data,many=True)
else:
serializer = self.get_serializer(data=self.request.data)
for item in self.request.data:
print("ITEM: "+str(item))
return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)
El problema es que entonces me dice que en el
<tr>
<th>Exception Value:</th>
<td>
<pre>__init__() takes 1 positional argument but 2 were given</pre>
</td>
</tr>
<tr>
<th>Exception Location:</th>
<td><span class="fname">/Users/usuario/PycharmProjects/proyecto/venv/lib/python3.9/site-packages/django/views/decorators/csrf.py</span>,
line 54, in wrapped_view</td>
Y si no le pongo el csrf_exempt entonces me suelta un mensaje de que paso hacia adelante porque no se cumple el CSRF...
Teneis algun ejemplo de como hacer lo que indico?
Desde un cliente mediante API enviar un listado JSON por POST para guardar los datos en la DB.