from django.shortcuts import render
# Create your views here.
from django.http import HttpResponse
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework import viewsets
from rest_framework.authentication import BaseAuthentication,SessionAuthentication
from rest_framework.decorators import action
from rest_framework.decorators import action
from rest_framework.filters import OrderingFilter
from rest_framework.permissions import AllowAny,IsAdminUser,IsAuthenticated,IsAuthenticatedOrReadOnly
from rest_framework.response import Response
from rest_framework.throttling import UserRateThrottle
from rest_framework.pagination import PageNumberPagination
from rest_framework.views import APIView
from rest_framework.permissions import BasePermission,SAFE_METHODS
from rest_framework.viewsets import ModelViewSet
from user.models import User
from user.serializers import UserSerializer
def index(request):
return HttpResponse("hello")
class PageNum(PageNumberPagination):
page_size_query_param = 'page_size'
max_page_size = 2
class MyPermission(BasePermission):
def has_permission(self, request, view):
print(view.kwargs.get('pk'),request.user.id)
print(request)
if request.user.is_superuser:
return True
elif view.kwargs.get('pk') ==str(request.user.id):
return True
return False
def has_object_permission(self, request, view, obj):
if request.user.id==obj.id:
return True
return False
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
pagination_class = PageNum
throttle_classes = [UserRateThrottle]
filter_backends = (DjangoFilterBackend,OrderingFilter)
ordering_fields=('username','phone','id')
filter_fields=('username','phone','is_active')