< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8

什么是跨域问题呢:

复制代码
1. 跨域问题:
    CORS 跨域资源共享: 有简单请求 和非简单请求

    简单请求:
        只要符合如下两条,就是简单请求,否则则是非简单请求
            (1)
            请求方法是以下三种方法之一:
            HEAD
            GET
            POST
            (2)
            HTTP的头信息不超出以下几种字段:
            Accept
            Accept - Language
            Content - Language
            Last - Event - ID
            Content - Type:只限于三个值application / x - www - form - urlencoded、multipart / form - data、text / plain

    简单请求只发一次请求
    非见到你请求发两次:一次是OPTIONS预检请求,预检请求同意我发,我再发起第二次真实请求,一次是真实的请求

处理跨域问题(可以使用django-cors-headers 模块)
复制代码

2. 如何处理?

复制代码
可以自己处理: 创建一个文件:
第一步:
class MyMiddleware(MiddlewareMixin):
    def process_response(self, request, response):
        # 处理了简单请求
        response['Access-Control-Allow-Origin'] = '*'
        # 处理非简单请求
        if request.method == 'OPTIONS':
            response['Access-Control-Allow-Headers'] = '*'
            # response['Access-Control-Allow-Methods']='PUT,PATCH'
            response['Access-Control-Allow-Methods'] = '*'

        return response
复制代码

3. 如何使用?

第二步: 在setting文件内
MIDDLEWARE = [
    'django.middleware.cache.UpdateCacheMiddleware',
    #处理跨域的中间件
    'app01.mycsrf.MyMiddleware',    #添加第一步写好的中间件配置信息


#总结 jason 数据就是非简单请求  put,delete 也是非简单请求

缓存问题

1. 缓存到文件的方法:

复制代码
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache',  # 指定缓存使用的引擎
        'LOCATION': 'D:\lqz\cache',  # 指定缓存的路径
        'TIMEOUT': 300,  # 缓存超时时间(默认为300秒,None表示永不过期)
        'OPTIONS': {
            'MAX_ENTRIES': 300,  # 最大缓存记录的数量(默认300)
            'CULL_FREQUENCY': 3,  # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3)
        }
    }
}
在settings中配置
复制代码

2. 使用缓存:

复制代码
-第二步:使用缓存
-使用单页面缓存(使用装饰器):
from django.views.decorators.cache import cache_page
@cache_page(5)
def cache_test(request):
    print('走视图函数')
    ctime=time.time()
    return render(request,'index.html',locals())
View Code
复制代码

3. 局部缓存在前端页面的处理:

复制代码
                -页面局部缓存
                        {% load cache %}
                        #传两个参数:第一个参数是超时时间,第二个参数是key值,唯一的标志#
                        {% cache 5  'ttt'%}
                            当前时间是:{{ ctime }}
                        {% endcache %}
前端html的处理
复制代码

 

4.全站缓存的配置中间件:

复制代码
MIDDLEWARE = [
    'django.middleware.cache.UpdateCacheMiddleware',
    #处理跨域的中间件
    'app01.mycsrf.MyMiddleware',

    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',

    'django.middleware.cache.FetchFromCacheMiddleware'
]

CACHE_MIDDLEWARE_SECONDS=5        #定义缓存的时间
在settings下配置如下
复制代码

 

posted on   kaikai2xiaoqi  阅读(212)  评论(0编辑  收藏  举报
编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· DeepSeek火爆全网,官网宕机?本地部署一个随便玩「LLM探索」
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 上周热点回顾(1.20-1.26)
· 【译】.NET 升级助手现在支持升级到集中式包管理
点击右上角即可分享
微信分享提示