drf版本控制 和django缓存,跨域问题,
drf版本控制


基于url的get传参方式
REST_FRAMEWORK={
# "DEFAULT_AUTHENTICATION_CLASSES":["app01.auth.AuthLogin",],
# "DEFAULT_PERMISSION_CLASSES":['app01.auth.MyPer'],
# "DEFAULT_THROTTLE_CLASSES":["app01.auth.VisitThrottle"],
'DEFAULT_PARSER_CLASSES':['rest_framework.parsers.JSONParser'],
'DEFAULT_THROTTLE_RATES': {
'luffy': '3/mmmmmm'
},
'DEFAULT_VERSION': 'v1', # 默认版本(从request对象里取不到,显示的默认值)
'ALLOWED_VERSIONS': ['v1', 'v2'], # 允许的版本
'VERSION_PARAM': 'version' # URL中获取值的key
}
基于url的正则方式
url(r'^(?P<version>[v1|v2]+)/publishs/', views.PublishView.as_view()),

django缓存


CACHES = {
'default': {
# 1. MemCache 基于MemCache的缓存
# 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
# 'LOCATION': '127.0.0.1:11211',
# 2. DB Cache 基于数据库的缓存
# 'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
# 'LOCATION': 'my_cache_table',
# 3. Filesystem Cache 基于文件的缓存
# 'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',
# 'LOCATION': '/var/tmp/django_cache',
# 4. Local Mem Cache 基于内存的缓存
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'LOCATION': 'backend-cache'
}
}
import os
import time
import django
from django.core.cache import cache
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'backend.settings')
django.setup()
def basic_use():
s = 'Hello World, Hello Django Cache.'
cache.set('key', s)
cache_result = cache.get('key')
print(cache_result)
s2 = 'Hello World, Hello Django Timeout Cache.'
cache.set('key2', s2, 5) #5是超时时间
cache_result = cache.get('key2')
print(cache_result)
time.sleep(5) #5秒后就查不到了
cache_result = cache.get('key2')
print(cache_result)
pass
if __name__ == '__main__':
basic_use()
#实例
# 星座运势
def constellation(request):
data = []
if already_authorized(request):
user = get_user(request)
constellations = json.loads(user.focus_constellations)
else:
constellations = all_constellations
for c in constellations:
result = cache.get(c)
if not result:
result = thirdparty.juhe.constellation(c)
timeout = timeutil.get_day_left_in_second()
cache.set(c, result, timeout)
logger.info("set cache. key=[%s], value=[%s], timeout=[%d]" %(c, result, timeout))
data.append(result)
response = CommonResponseMixin.wrap_json_response(data=data, code=ReturnCode.SUCCESS)
return JsonResponse(response, safe=False)
settings:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', # 指定缓存使用的引擎
'LOCATION': r'D:\lqz\vue', # 指定缓存的路径
'TIMEOUT': 300, # 缓存超时时间(默认为300秒,None表示永不过期)
'OPTIONS': {
'MAX_ENTRIES': 300, # 最大缓存记录的数量(默认300)
'CULL_FREQUENCY': 3, # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3)
}
}
}

views:
from django.shortcuts import render,HttpResponse # Create your views here.
from django.views.decorators.cache import cache_page
import time
# 单页面缓存缓存5秒
# @cache_page(20)
def test(request):
print('我来了')
ctime=time.time() return render(request,'test.html',locals())
templates:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script src="/static/jquery-3.3.1.js"></script>
<title>Title</title>
</head>
<body>
不缓存的
{{ ctime }}
<br>
缓存的的
{#{% load cache %}#}
{#第一个参数是超时时间,缓存时间,第二个参数是key值,别名#}
{#{% cache 10 'test' %}#}
{# {{ ctime }}#}
{#{% endcache %}#}
<button id="btn">点我发请求</button>
</body> <script>
$("#btn").click(function () {
$.ajax({
url:'http://127.0.0.1:8000/v1/publishs/',
type:'get',
{# type:'delete',#}
{# type:'put',#}
{# contentType:'application/json',#}
{# data:JSON.stringify({'name':'lqz'}),#}
success:function (data) {
console.log(data)
}
})
}) </script>
</html>
跨域问题


from django.utils.deprecation import MiddlewareMixin
class CORSMiddle(MiddlewareMixin):
def process_response(self,request,response):
response['Access-Control-Allow-Origin'] = 'http://127.0.0.1:8001'
if request.method == 'OPTIONS':
response['Access-Control-Allow-Methods'] = 'PUT,DELETE'
response['Access-Control-Allow-Headers']='Content-Type'
return response
drf版本控制 和django缓存,跨域问题,的更多相关文章
- DRF序列化、认证、跨域问题
初级 #models.py from django.db import models class User(models.Model): user = models.CharField(max_len ...
- django允许跨域请求配置
django允许跨域请求配置 下载corsheader pip install django-cors-headers 修改setting.py中配置 在INSTALLED_APPS中增加corshe ...
- Django 处理跨域的配置、前台处理ajax
一. Django处理跨域 跨域的处理方式有很多,使用最多的就是CORS(跨域资源共享),接下来大致提一下django中处理跨域的配置. 首先安装django-cors-headers模块: pip ...
- Django cors跨域问题
Django cors跨域问题 前后端分离项目中的跨域问题 即同源策略 同源策略:同源策略/SOP(Same origin policy)是一种约定,由 Netscape 公司 1995 年引入浏览器 ...
- 版本控制,django缓存,跨域问题解决
复习 分页: 1. 简单分页 2. 偏移分页 3. 加密分页 解析器:客户处理前端提交来的数据 urlencode: body体中的数据格式: key=value& formdata编码:为区 ...
- Django drf:手撸自定义跨域
项目需求: 1.用域名8000向8001发送请求,用django框架解决跨域问题 2.用上自定义中间件配置,支持get.post.put.detele和非简单请求 3.支持版本控制 4.在settin ...
- Django框架深入了解_05 (Django中的缓存、Django解决跨域流程(非简单请求,简单请求)、自动生成接口文档)
一.Django中的缓存: 前戏: 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一 ...
- django中的缓存 跨域问题(同源策略)
django缓存机制 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作 ...
- django restframework 跨域访问
场景介绍: 在Django开发过程中,使用前后端分离设计的站点越来越多,如Django+VUE.Django+Angular.在使用DjangoRestFramework开发API的过程中,由于前端站 ...
随机推荐
- Loadrunner学习资料
辅导书籍(书的价值主要在学习的人,而不在书本身) 于涌 | 精通软件性能测试与LoadRunner实战京东 点击查看 柳胜 | 性能测试从零开始京东 点击查看适合零基础的同学学习 柳胜 | LoadR ...
- 一个.net的程序员如何转到java的?
先说明,大佬请忽略我这篇文章, 我是一个做了5年的纯种C#开发人, 我在此仅记录一下我转java的过程.都知道, java是开源的,所以它的开发工具贼多,不像.net, 直接地表最强的IDE. 像现 ...
- Open Source
资源来源于http://www.cnblogs.com/Leo_wl/category/246424.html RabbitMQ 安装与使用 摘要: RabbitMQ 安装与使用 前言 吃多了拉就是队 ...
- React Native之配置URL Scheme(iOS Android)
React Native之配置URL Scheme(iOS Android) 一,需求分析 1.1,需要在网站中打开/唤起app,或其他app中打开app,则需要设置URL Scheme.比如微信的是 ...
- js和jquery设置css样式的几种方法
一.js设置样式的方法 1. 直接设置style的属性 某些情况用这个设置 !important值无效 element.style.height = '50px'; 2. 直接设置属性(只能用于某些 ...
- Codeforces Beta Round #51 D. Beautiful numbers(数位dp)
题目链接:https://codeforces.com/contest/55/problem/D 题目大意:给你一段区间[l,r],要求这段区间中可以整除自己每一位(除0意外)上的数字的整数个数,例如 ...
- 走进Java中的持有对象(容器类)之一 容器分类
Java容器可以说是增强程序员编程能力的基本工具,本系列将带您深入理解容器类. 容器的用途 如果对象的数量与生命周期都是固定的,自然我们也就不需要很复杂的数据结构. 我们可以通过创建引用来持有对象,如 ...
- Java异常知识整理_处理异常时的性能开销
1.首先列两个从别的地方看到的说法: try-catch代码段会产生额外的性能开销,或者换个角度说,它往往会影响JVM对代码进行优化,所以建议仅捕获有必要的代码段,尽量不要一个大的try包住整段的代码 ...
- CMDB资产管理系统开发【day26】:实现资产自动更新
1.需求分析 1.比对分析 比对的时候以那个数据源为主? old [1,2,3 ] db数据库 new [2,3,4 ] 客户端汇报过来的 当然以客户端汇报过来的数据为主 2.更新分析 不同的表到底拿 ...
- 分布式监控系统开发【day38】:主机存活检测程序解析(七)
一.目录结构 二.入口 1.文件MonitorServer.py import os import sys if __name__ == "__main__": os.enviro ...