一.文档自动化管理
1.django rest framework提供了一个接口:
可以将代码中注释转换为文档中内容(list,create等),以及help_text等等,且会生成JavaScript,Python,Shell的测试脚本,也可以直接在该接口测试。
from rest_framework.documentation import include_docs_urls.......urlpatterns = [ # 配置drf文档 url('^docs/', include_docs_urls(title='悦运动')), ......]
2.效果如下:
二.django rest frmawork的缓存
1.Django自带的缓存机制:
2.drf-extensions:
2.1安装:
2.2缓存的使用(适用于retrieve和list):
1 #缓存2 from rest_framework_extensions.cache.mixins import CacheResponseMixin3 ......4 #配置缓存mixin5 class JoinScheduleViewset(CacheResponseMixin,mixins.ListModelMixin, mixins.DestroyModelMixin,6 mixins.CreateModelMixin,7 mixins.RetrieveModelMixin, viewsets.GenericViewSet):8 ......
2.3添加缓存过期时间(setting文件):
REST_FRAMEWORK_EXTENSIONS = { #15分钟 'DEFAULT_CACHE_RESPONSE_TIMEOUT': 60 * 15}
3.配置redis缓存(会在redis生成相应key及内容等。不同内容格式【json,html等】对应key不同):
3.1django-redis地址:
3.2安装:pip install django-redis
3.3简单配置(setting中):
CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", #有密码就配置,否则直接跟redis地址,1是数据库 "LOCATION": "redis://密码@127.0.0.1:6379/1", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", } }}
三.Throtting对用户和ip进行限速
1.目的:
限制爬虫,防止爬虫对服务器造成压力,保护数据等原因。
2.drf官方文档介绍:
2.1setting配置:
REST_FRAMEWORK = { 'DEFAULT_THROTTLE_CLASSES': ( #未登录 'rest_framework.throttling.AnonRateThrottle', #登录后 'rest_framework.throttling.UserRateThrottle' ), 'DEFAULT_THROTTLE_RATES': { #某段时间最多反问多少次 'anon': '100/day', 'user': '1000/day' }}
请求超过了次数,状态码为429
2.2view引入(解析配置,获取ip等等操作):
#引入throttlefrom rest_framework.throttling import UserRateThrottle,AnonRateThrottleclass ScheduleViewset(......): #配置ip限制访问次数 throttle_classes = (UserRateThrottle,AnonRateThrottle).......