进阶开发——文档,缓存,ip限速
一.文档自动化管理
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自带的缓存机制:http://djangobook.py3k.cn/2.0/chapter15/
2.drf-extensions:https://github.com/chibisov/drf-extensions
2.1安装:

2.2缓存的使用(适用于retrieve和list):
#缓存
from rest_framework_extensions.cache.mixins import CacheResponseMixin
......
#配置缓存mixin
class JoinScheduleViewset(CacheResponseMixin,mixins.ListModelMixin, mixins.DestroyModelMixin,
mixins.CreateModelMixin,
mixins.RetrieveModelMixin, viewsets.GenericViewSet):
......
2.3添加缓存过期时间(setting文件):
REST_FRAMEWORK_EXTENSIONS = {
#15分钟
'DEFAULT_CACHE_RESPONSE_TIMEOUT': 60 * 15
}
3.配置redis缓存(会在redis生成相应key及内容等。不同内容格式【json,html等】对应key不同):
3.1django-redis地址:https://github.com/niwinz/django-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官方文档介绍:https://www.django-rest-framework.org/api-guide/throttling/
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等等操作):
#引入throttle
from rest_framework.throttling import UserRateThrottle,AnonRateThrottle class ScheduleViewset(......):
#配置ip限制访问次数
throttle_classes = (UserRateThrottle,AnonRateThrottle)
.......
进阶开发——文档,缓存,ip限速的更多相关文章
- web开发--文档下载
GOOGLE在线文档下载地址分享(GOOGLE的文档地址暂不能用了,会放在其它位置..) GOOGLE的在线文档功能好象挂掉了...等找个其它存放的位置把这些文档再上传上去... 存在GOOGLE里面 ...
- [extjs] extjs 5.1 API 开发 文档
官方博客发布了这个新版本说明,英文文章请戳下面 http://www.sencha.com/blog/announcing-sencha-ext-js-5.1/ 翻译版本请戳下面: http://ex ...
- webapi文档描述-swagger
最近做的项目使用mvc+webapi,采取前后端分离的方式,后台提供API接口给前端开发人员.这个过程中遇到一个问题后台开发人员怎么提供接口说明文档给前端开发人员,最初打算使用word文档方式进行交流 ...
- 在线文档预览方案-office web apps
最近在做项目时,要在手机端实现在线文档预览的功能.于是百度了一下实现方案,大致是将文档转换成pdf,然后在通过插件实现预览.这些方案没有具体实现代码,也没有在线预览的地址,再加上项目时间紧迫.只能考虑 ...
- [转载]在线文档预览方案-Office Web Apps
最近在做项目时,要在手机端实现在线文档预览的功能.于是百度了一下实现方案,大致是将文档转换成pdf,然后在通过插件实现预览.这些方案没有具体实现代码,也没有在线预览的地址,再加上项目时间紧迫.只能考虑 ...
- webapi文档
webapi文档描述-swagger 最近做的项目使用mvc+webapi,采取前后端分离的方式,后台提供API接口给前端开发人员.这个过程中遇到一个问题后台开发人员怎么提供接口说明文档给前端开发人员 ...
- dom4j操作xml文档
java Dom4j解析XML文件 标签(空格分隔):java进阶 xml文档: <?xml version="1.0" encoding="UTF-8" ...
- ASP.NET WebAPI使用Swagger生成测试文档
ASP.NET WebAPI使用Swagger生成测试文档 SwaggerUI是一个简单的Restful API测试和文档工具.简单.漂亮.易用(官方demo).通过读取JSON配置显示API .项目 ...
- ASP.NET WebAPI 测试文档 (Swagger)
ASP.NET WebAPI使用Swagger生成测试文档 SwaggerUI是一个简单的Restful API测试和文档工具.简单.漂亮.易用(官方demo).通过读取JSON配置显示API .项目 ...
随机推荐
- WPF 样式(定义样式、引用样式、样式作用域、Trigger触发器)
1.定义 资源字典 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presenta ...
- 【转】js中通过docment.cookie获取到的内容不完整! 在浏览器的application里的cookie里可以看到完整的cookie,个别字段无法通过document.cookie获取。 是否有其他办法可以获取到??
js中通过docment.cookie获取到的内容不完整!在浏览器的application里的cookie里可以看到完整的cookie,个别字段无法通过document.cookie获取.是否有其他办 ...
- java jvm heap dump及 thread dump分析
一.概念: 在进行java应用故障分析时,经常需要分析内存和cpu信息,也就说所谓的heap dump 和 thread dump heap dump: heap dump文件是一个二进制文件,需要工 ...
- face detection[Multi-view face detection&& MTCNN]
因为这两篇论文感觉内容较短,故而合并到一个博文中. Multi-view face detection 本文来自<Multi-view Face Detection Using Deep Con ...
- 从零开始搭建django前后端分离项目 系列三(实战之异步任务执行)
前面已经将项目环境搭建好了,下面进入实战环节.这里挑选项目中涉及到的几个重要的功能模块进行讲解. celery执行异步任务和任务管理 Celery 是一个专注于实时处理和任务调度的分布式任务队列.由于 ...
- vue 中给组建绑定原生事件@click.native=""
<template> <div class="div"> //组建使用 <v-header @click.native=& ...
- hibernate(*.hbm.xml)中新添加的字段被标记为红色(找不到)的解决方法
首先得是以这个方式生成的bean和xml,配置好了数据源(这样才能让hibernate中的配置和mysql进行交互) https://www.cnblogs.com/kinome/p/10549969 ...
- Java字符串操作及与C#字符串操作的不同
每种语言都会有字符串的操作,因为字符串是我们平常开发使用频率最高的一种类型.今天我们来聊一下Java的字符串操作及在某些具体方法中与C#的不同,对于需要熟悉多种语言的人来说,作为一种参考.进行诫勉 首 ...
- 【中文版 | 论文原文】BERT:语言理解的深度双向变换器预训练
BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding 谷歌AI语言组论文<BERT:语言 ...
- linux if -d -e -f表达的意思
文件表达式-e filename 如果 filename存在,则为真-d filename 如果 filename为目录,则为真 -f filename 如果 filename为常规文件,则为真-L ...