Django項目--靜態首頁的數據緩存(設置、獲取、更新)

0 前言

在這里插入圖片描述
將處理計算的結果先臨時保存起來,下次使用的時候可以先直接使用,如果沒有這個備份的數據,重新進行計算處理。

將緩存數據保存在內存中 (本項目中保存在redis中)

cache注意事項:
1)如果修改了數據庫的數據,直接刪除緩存;
2)緩存要設置有效期。

相關django文檔:Django緩存

1.設置緩存

在這里插入圖片描述

# http://127.0.0.1:8000
class IndexView(View):'''首頁'''def get(self, request):'''顯示首頁'''# 嘗試從緩存中獲取數據context = cache.get('index_page_data')if context is None:print('設置緩存')# 緩存中沒有數據# 獲取商品的種類信息types = GoodsType.objects.all()# 獲取首頁輪播商品信息goods_banners = IndexGoodsBanner.objects.all().order_by('index')# 獲取首頁促銷活動信息promotion_banners = IndexPromotionBanner.objects.all().order_by('index')# 獲取首頁分類商品展示信息for type in types: # GoodsType# 獲取type種類首頁分類商品的圖片展示信息image_banners = IndexTypeGoodsBanner.objects.filter(type=type, display_type=1).order_by('index')# 獲取type種類首頁分類商品的文字展示信息title_banners = IndexTypeGoodsBanner.objects.filter(type=type, display_type=0).order_by('index')# 動態給type增加屬性,分別保存首頁分類商品的圖片展示信息和文字展示信息type.image_banners = image_bannerstype.title_banners = title_bannerscontext = {'types': types,'goods_banners': goods_banners,'promotion_banners': promotion_banners}# 設置緩存# key  value timeoutcache.set('index_page_data', context, 3600)# 獲取用戶購物車中商品的數目user = request.usercart_count = 0if user.is_authenticated():# 用戶已登錄conn = get_redis_connection('default')cart_key = 'cart_%d'%user.idcart_count = conn.hlen(cart_key)# 組織模板上下文,context中存在則更新,不存在則添加context.update(cart_count=cart_count)# 使用模板return render(request, 'index.html', context)

在商品good應用的view視圖中,設置緩存。
緩存的鍵:index_page_data
緩存的值:context

            context = {'types': types,'goods_banners': goods_banners,'promotion_banners': promotion_banners}

注意,獲取用戶購物車中商品的數目cart_count并未加入緩存,因為購物車模塊只有用戶登錄之后才會有!

2.獲取緩存

settings.py中設置緩存

# Django的緩存配置
CACHES = {"default": {"BACKEND": "django_redis.cache.RedisCache","LOCATION": "redis://172.16.179.142:6379/9","OPTIONS": {"CLIENT_CLASS": "django_redis.client.DefaultClient",}}
}

Redis數據庫中查詢緩存
在這里插入圖片描述

3.更新緩存

如果管理員在后臺對首頁的商品數據進行更改,則需要在調用save_model和delete.model的同時,更新緩存。
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/452800.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452800.shtml
英文地址,請注明出處:http://en.pswp.cn/news/452800.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

關于騰訊算法大賽

騰訊算法大賽 本文參考于我協會前會長吳師兄的文檔 騰訊社交廣告高校算法大賽是面向高校大學生的算法大賽,作為騰訊核心的廣告業務單元,騰訊社交廣告通過對海量社交數據進行深入分析,構建多樣廣告場景,與8億用戶連接對話。在大數據…

列表推導式

#麻煩辦法new_lst []for i in range(10): new_lst.append(i**2)print(new_lst)#簡單辦法print([i**2 for i in range(10)])# 小題下面列表中取余list_a [1,2,3,-5,20,-7]print([i%2 for i in list_a])# 30以內所有能被3整除的數print([won for won in range(30) if won%3 …

軟件過程

軟件過程是為了獲得高質量軟件所需要完成的一系列任務的框架,它規定了完成各項任務的工作步驟。 軟件過程描述為了開發出客戶需要的軟件,什么人(who)、在什么時候(when)、做什么事(what&#x…

【總結整理】JavaScript的DOM事件學習(慕課網)

事件:在文檔或者瀏覽器窗口中發生的一些,特定的交互瞬間 HTML和JavaScript的交互通過事件 來實現 比如:1.滾動條向下滑動,加載圖片 2.圖片輪播,鼠標由2-5頁調換 本章內容1、理解事件流2、使用事件處理程序3、不同的事件…

Python面試題總結(6)--數據類型(綜合)

1. Python 里面如何實現 tuple 和 list 的轉換? 答: Python 中的類型轉換,一般通過類型強轉即可完成 tuple 轉 list 使用 list() 方法 list 轉 tuple 使用 tuple() 方法 2. 我們知道對于列表可以使用切片操作進行部分元素的選擇&#xff0c…

項目經理需要的思維批判

想做好項目經理,就一定要改變你的思維方式。這對于技術出身的朋友尤其重要。 清末人們自以為天朝,他國皆為蠻夷。結果如何呢?喪師辱國,自己淪為病夫。其根本莫非自己腦筋不對頭?后來又搞洋務運動,以為洋人…

NavigationView更改菜單icon和title顏色變化效果

NavigationView menu默認icon和title會隨著菜單狀態改變而改變,選擇某個菜單后再次打開側邊菜單后會發現該菜單的icon和title會變成應用的主顏色,其他菜單項仍然為黑色。 如果想關閉系統默認的這個效果,有兩種方式: 1. XML布局文件…

java項目打鏡像_docker通過dockerfile打java項目鏡像

環境:centos7思路:java -jar 啟動的項目打包成docker images進行運行創建dockerfile——>創建shell腳本——>打包images1、dockerfile內容如下[rootk8s-master xxl-execl]# more dockerfile#網上拖取java8的鏡像FROM java:8MAINTAINER zhangshan-m…

什么是數據庫

數據庫(Database,簡稱DB)是長期儲存在計算機內、有組織的、可共享的大量數據的集合。1.數據庫的基本特征2.數據按一定的數據模型組織、描述和儲存3.可為各種用戶共享4.冗余度較小5.數據獨立性較高6.易擴展

NumPy常用屬性及方法

NumPy是高性能科學計算和數據分析的基礎包。部分功能如下: ndarray, 具有矢量算術運算和復雜廣播能力的快速且節省空間的多維數組。用于對整組數據進行快速運算的標準數學函數(無需編寫循環)。用于讀寫磁盤數據的工具以及用于操作內存映射文件…

Windows下gmssl使用記錄

使用gmssl進行計算sm4,編譯的版本是gmssl2.0,2.1版本編譯不過去 第一步下載軟件,下載Visual Studio 2010旗艦版、nasm-2.13.03-installer-x86、ActivePerl-5.22.4.2205-MSWin32-x86-64int-403863這三個軟件, 注意vs版本不能太低&a…

公司管理項目管理中的技巧

如果在項目實施中選出最難解決的幾個問題,那么管理問題一定名列前茅。在管理問題中,團隊管理又是其中的難點。一個項目管理的好壞,很大程度就體現在團隊的建設和管理上。團隊管理涉及到管理學、心理學和哲學等諸多方面內容,具體實…

數據庫管理系統

什么是數據庫管理系統位于用戶與操作系統之間的一層數據管理軟件是基礎軟件,是一個大型復雜的軟件系統 數據庫管理系統的用途科學地組織和存儲數據、高效地獲取和維護數據數據定義功能提供數據定義語言(DDL)定義數據庫中的數據對象數據組織、…

kangle服務器搭建java_linux下kangle虛擬主機-架設java空間的教程及心得

1. chmod x jdk-6u31-linux-i586-rpm.bin2. ./jdk-6u31-linux-i586-rpm.bin復制代碼(注:如果下載的版本不同輸入實際版本)2.下載插件包:1. wget http://www.kanglesoft.com/download/ent/easypanel-tomcat-lin-1.0.tar.gz2. tar xzf easypanel-tomcat-lin-1.0.tar.g…

Django項目--登錄判斷裝飾器

view.py中定義登錄判斷裝飾器函數 def login_required(view_func):登錄判斷裝飾器def wrapper(request, *view_args, **view_kwargs):# 判斷用戶是否登錄if request.session.has_key(islogin):# 用戶已登錄,調用對應的視圖return view_func(request, *view_args, **view_kwarg…

Apple著手拋棄32位macOS應用程序

\看新聞很累?看技術新聞更累?試試下載InfoQ手機客戶端,每天上下班路上聽新聞,有趣還有料!\\\Apple已經著手拋棄macOS上的32位應用程序了。macOS的下一個維護更新版本High Sierra 10.13.4將會在用戶打開32位應用程序時對…

HiveQL與SQL區別

1、Hive不支持等值連接 ?SQL中對兩表內聯可以寫成:?select * from dual a,dual b where a.key b.key;?Hive中應為?select * from dual a join dual b on a.key b.key; 而不是傳統的格式:SELECT t1.a1 as c1, t2.b1 as c2FROM t1, t2WHERE t1.a2 t…

Django項目--csrf攻擊

1.案例流程圖: 2.django防止csrf的方式: 1 ) Django中默認打開csrf中間件。settings.py文件中: MIDDLEWARE_CLASSES (django.contrib.sessions.middleware.SessionMiddleware,django.middleware.common.CommonMiddleware,django.middlewar…

數據庫管理系統與數據庫系統

數據庫:容納數據的倉庫。數據庫系統:數據庫、數據庫管理系統、硬件、操作人員的合在一起的總稱。數據庫管理系統:用來管理數據及數據庫的系統。數據庫系統包含數據庫管理系統、數據庫及數據庫開發工具所開發的軟件(數據庫應用系統…