0
我試圖測試更新值,在這個例子中,一個位置的時隙(每個位置可以有多個時隙,一個時隙有1個位置),帶有一個PUT請求。我想更新location_id 1
,時隙1
的填充屬性爲true
。Django API測試:CSRF異常
即使我在視圖中的函數定義之上添加了@csrf_exempt
,我仍然收到"CSRF Failed: CSRF token missing or incorrect."
錯誤。
DHC PUT
請求:
- 本地主機:1234/1.0 /位置/ 1 /時隙/ 1
- 體:{ 「填充」: 「真」}
URL模式:
...
url(r'^v1.0/location/?/timeslots/?', content_views.location_detail),
...
Views.py:
class LocationViewSet(viewsets.ModelViewSet):
queryset = Location.objects.all()
serializer_class = LocationSerializer
http_method_names = ['get', 'post', 'put']
@api_view(['GET', 'POST', 'PUT',])
@csrf_exempt
def location_detail(request, pk):
try:
location = Location.objects.get(pk=pk)
except Location.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
if request.method == 'GET':
serializer = LocationSerializer(location)
return Response(serializer.data)
elif request.method == 'PUT':
serializer = LocationSerializer(location, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Models.py:
class Location(models.Model):
...
class Timeslot(models.Model):
name = models.CharField(max_length=200)
time = models.DateTimeField(auto_now_add=True, null=True)
location_id = models.ForeignKey(Location, related_name='timeslots')
filled = models.BooleanField(default=False)
我不知道爲什麼我收到了csrf
問題,儘管豁免。
DRF當你使用'SessionAuthentication'公然無視'@ csrf_exempt'。 – knbk