drf框架之跨域問題的解決與緩存問題
阿新 • • 發佈:2019-04-28
content com 超時 pda cti header event port ade
什麽是跨域問題呢:
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下配置如下
drf框架之跨域問題的解決與緩存問題