1.节流自定义类: import time from api import models VISIT_RECORD = {} class VisitThrottle(BaseThrottle): #设置访问频率为60秒3次 def allow_request(self, request, view): #获取用户ID # remote_addr = request.META.get('REMOTE_ADDR') remote_addr = self.get_ident(request) ctim…
#以中间件方式解决API数据访问跨域问题1.API下新建文件夹下写PY文件a.引入内置类继承: from django.middleware.common import MiddlewareMixin class CORSMiddleware(MiddlewareMixin): def process_response(self,request,response): #添加响应头 #允许你的域名来获取我的数据,'*'也可以单独设置 response['Access-Control-Allow-O…
自动生成4个url路由:from rest_framework import routersrouter = routers.DefaultRouter()router.register(r'wrx',PagesView)urlpatterns = [ re_path(r'^(?P<version>[v1|v2]+)/',include(router.urls)),]生成的URLapi/ ^(?P<version>[v1|v2]+)/ ^wrx/$ [name='userinfo-…
渲染器:作用于页面,JSONRenderer只是JSON格式,BrowsableAPIRenderer有页面,.AdminRenderer页面以admin形式呈现(需要在请求地址后缀添加?fromat=admin)渲染器全局与局部配置方法全局配置: REST_FRAMEWORK = { #渲染器配置 'DEFAULT_RENDERER_CLASSES': ['rest_framework.renderers.JSONRenderer', 'rest_framework.renderers.Bro…
分页a.分页,看第N页,每页显示N条数据方式一:使用PageNumberPagination创建分页对象,配合settings全局配置 views设置 from rest_framework.pagination import PageNumberPagination class PagesView(APIView): def get(self,request,*args,**kwargs): #获取所有数据 m = models.UserInfo.objects.all() #创建分页对象 p…
方式一 1.settings设置 INSTALLED_APPS = [ ... 'rest_framework', ] 2.views设置 from rest_framework.response import Response class PagesView(APIView): def get(self,request,*args,**kwargs): ... ... return Response(ser.data) 方式二 1.urls: re_path(r'^(?P<version>[…
满足两个要求,request.Post中才有值 1.请求头要求:请求头中的Content-Type为application/x-www-form-urlencoded 2.数据格式要求 name=x&age=xx&gender=x 如: a.form表单提交 <form methed..> input </form> b.ajax提交 $.ajax({ url:.. type:POST headers:{Content-Type:application/json}…
序列化方式一 :在业务类里序列化数据库数据 class RolesView(APIView): def get(self,request,*args,**kwargs): roles = models.Role.objects.all().values('id','title')[1:3] ret = list(roles) r = json.dumps(ret,ensure_ascii=False) return HttpResponse(r) 方式二:写个序列化的类,在业务类中引用,序列化类…
1.自己写: class UserView(APIView): versioning_class = ParamVersion def get(self,request,*args,**kwargs): v1 = request._request.GET.get('version') v2 = request.query_params.get('version') #获取结果是一样的,两种获取方式 print(v1,v2) 2.使用自带类: from rest_framework.version…
权限认证:1.项目下utils文件写permissions.py文件 from rest_framework.permissions import BasePermission class SVIPPermission(BasePermission): #用户权限类 message = 'SVIP才可以访问' #认证错误时的返回信息 def has_permission(self, request, view): ut = request.user.usertype if ut == 3: re…