Bir belge uygulaması için sınıf tabanlı bir api oluşturuyorum, ancak APIView'mdeki yayın ve yama tanımlarına belirli izinler eklemek istiyorum. Örneğin,Belirli istekler için Django Rest Framework'de izinler nasıl eklenir
5
A
cevap
2
By default permissions are unrestricted. settings.py
'unuzda, kullanıcıların doğrulanması ve doğru Django model iznine sahip olması gereken farklı bir varsayılanlar kümesi belirleyebilirsiniz. Etkili olabilmeniz içinözniteliğini DjangoModelPermissions
için görünüm sınıfınızda belirtmeniz gerekir.
# settings.py
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticated',
'rest_framework.permissions.DjangoModelPermissions'
)
}
# views.py
class DocumentList(APIView):
model = Document
...
DjangoModelPermissions
izin haritası can be found in the source.
- GET, SEÇENEKLER ve BAŞ iznini gerektirmeyen ama biz
IsAuthenticated
belirtilen beri biz hala - POST haritalar
- haritalar SİL değiştirmek için
- PUT ve YAMA harita eklemek için bu şart koşuyoruz Bu benim yaptığım budur
0
silin. Proje için documentation
düzenlendi izin sınıfından Referans
proje
from rest_framework import permissions
class IsAuthenticatedOrReadOnly(permissions.BasePermission):
def has_object_permission(self, request, view, obj):
# Read permission - always allow for GET request
if request.method in permissions.SAFE_METHODS:
return True
# Write permissions - only if authenticated
return request.user and request.user.is_authenticated()
Şimdi görünümde bu PermissionClass kullanmak/permissions.py
@permission_classes((IsAuthenticatedOrReadOnly,))
class ShopViewSet(viewsets.ModelViewSet):
queryset = Shop.objects.all()
serializer_class = ShopSerializer