Probleme mit permissons in DjangoRestFramework
Verfasst: Donnerstag 26. August 2021, 13:37
Hallo,
habe ein Problem mit den permissions im DRF:
habe eine Model:
die serializers.py:
und die view dazu:
Im Django-Admin-Bereich habe ich einen Superuser, und einen "normalen" User angelegt.
Mit
kann ich GET und/oder POST-Requests senden, und bekomme auch immer die korrekten JSON-Daten zurückgeliefert,
bzw. neue Datensätze werden angelegt.
Soweit alles ok.
Mit der Einstellung:
kann ich wohl die Django Standard Permissions benutzen.
Hierzu muss ich aber in der view die property oder die
Methode implementieren.
Ab hier beißt es aber aus
habe ein Problem mit den permissions im DRF:
habe eine Model:
Code: Alles auswählen
from django.db import models
class lic_test(models.Model):
id = models.AutoField(primary_key='true')
lfn = models.IntegerField(default=0,blank=True)
lic = models.CharField(max_length=128,blank=True)
Code: Alles auswählen
from rest_framework import serializers
from .models import lic_test
class licSerializer(serializers.ModelSerializer):
class Meta:
model = lic_test
fields = '__all__'
Code: Alles auswählen
from django.shortcuts import render
from django.http.response import JsonResponse
from rest_framework.parsers import JSONParser
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from rest_framework.permissions import IsAuthenticated, DjangoModelPermissions
from .models import lic_test
from .serializers import licSerializer
class liclist(APIView):
permission_classes = [IsAuthenticated]
def get(self,request):
if 'lfn' in request.data:
nr = request.data['lfn']
lic1 = lic_test.objects.filter(lfn__in=nr)
else:
lic1 = lic_test.objects.all()
serializer = licSerializer(lic1, many= True)
return Response(serializer.data)
def post(self, request):
lic_data = JSONParser().parse(request)
lic_serializer = licSerializer(data=lic_data)
if lic_serializer.is_valid():
lic_serializer.save()
return JsonResponse(lic_serializer.data, status=status.HTTP_201_CREATED)
return JsonResponse(lic_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Mit
Code: Alles auswählen
data = {'lfn':[29]}
data = {'lfn':[]}
data = {}
response = requests.get("http://*****", json=data, auth=HTTPBasicAuth('user', 'pass'))
response = requests.post("http://*****", json=data, auth=HTTPBasicAuth('user', 'pass'))
bzw. neue Datensätze werden angelegt.
Soweit alles ok.
Mit der Einstellung:
Code: Alles auswählen
permission_classes = [DjangoModelPermissions]
Hierzu muss ich aber in der view die
Code: Alles auswählen
.queryset
Code: Alles auswählen
get_queryset()
Ab hier beißt es aber aus
