Django项目--首页静态化
生活随笔
收集整理的這篇文章主要介紹了
Django项目--首页静态化
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
0前言
1.使用Celery生成靜態(tài)頁面
task.py中新增任務(wù)函數(shù)generate_static_index_html(),任務(wù)函數(shù)生成靜態(tài)頁面。
2.配置Nginx提供靜態(tài)頁面
Nginx配置文件中新增配置項(xiàng)
3.管理員修改首頁所需要表中的數(shù)據(jù)時(shí),重新生成index靜態(tài)頁面。
在goods應(yīng)用下的admin文件中,重寫save_model和delete_model方法。
當(dāng)管理員在后臺(tái)新增或者刪除首先所需數(shù)據(jù)時(shí),自動(dòng)調(diào)用save_model或者delete_model,其中調(diào)用了Celery中的任務(wù)函數(shù)generate_static_index_html(),此時(shí)任務(wù)函數(shù)生成靜態(tài)頁面static/index.html,當(dāng)用戶訪問時(shí),將靜態(tài)頁面推送給瀏覽器。
from django.contrib import admin from django.core.cache import cache from goods.models import GoodsType,IndexPromotionBanner,IndexGoodsBanner,IndexTypeGoodsBanner # Register your models here.class BaseModelAdmin(admin.ModelAdmin):def save_model(self, request, obj, form, change):'''新增或更新表中的數(shù)據(jù)時(shí)調(diào)用'''super().save_model(request, obj, form, change)# 發(fā)出任務(wù),讓celery worker重新生成首頁靜態(tài)頁from celery_tasks.tasks import generate_static_index_htmlgenerate_static_index_html.delay()# 清除首頁的緩存數(shù)據(jù)cache.delete('index_page_data')def delete_model(self, request, obj):'''刪除表中的數(shù)據(jù)時(shí)調(diào)用'''super().delete_model(request, obj)# 發(fā)出任務(wù),讓celery worker重新生成首頁靜態(tài)頁from celery_tasks.tasks import generate_static_index_htmlgenerate_static_index_html.delay()# 清除首頁的緩存數(shù)據(jù)cache.delete('index_page_data')class GoodsTypeAdmin(BaseModelAdmin):passclass IndexGoodsBannerAdmin(BaseModelAdmin):passclass IndexTypeGoodsBannerAdmin(BaseModelAdmin):passclass IndexPromotionBannerAdmin(BaseModelAdmin):passadmin.site.register(GoodsType, GoodsTypeAdmin) admin.site.register(IndexGoodsBanner, IndexGoodsBannerAdmin) admin.site.register(IndexTypeGoodsBanner, IndexTypeGoodsBannerAdmin) admin.site.register(IndexPromotionBanner, IndexPromotionBannerAdmin)總結(jié)
以上是生活随笔為你收集整理的Django项目--首页静态化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机没有地址栏,“我的电脑”地址栏不见
- 下一篇: BI系统的分布式部署原理和技术实现