0前言

1.使用Celery生成静态页面


task.py中新增任务函数generate_static_index_html(),任务函数生成静态页面。

@app.task
def generate_static_index_html():'''产生首页静态页面'''# 获取商品的种类信息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_banners# 组织模板上下文context = {'types': types,'goods_banners': goods_banners,'promotion_banners': promotion_banners}# 使用模板# 1.加载模板文件,返回模板对象temp = loader.get_template('static_index.html')# 2.模板渲染static_index_html = temp.render(context)# 生成首页对应静态文件save_path = os.path.join(settings.BASE_DIR, 'static/index.html')with open(save_path, 'w') as f:f.write(static_index_html)

2.配置Nginx提供静态页面

Nginx配置文件中新增配置项

3.管理员修改首页所需要表中的数据时,重新生成index静态页面。

在goods应用下的admin文件中,重写save_model和delete_model方法。

当管理员在后台新增或者删除首先所需数据时,自动调用save_model或者delete_model,其中调用了Celery中的任务函数generate_static_index_html(),此时任务函数生成静态页面static/index.html,当用户访问时,将静态页面推送给浏览器。

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):'''新增或更新表中的数据时调用'''super().save_model(request, obj, form, change)# 发出任务,让celery worker重新生成首页静态页from celery_tasks.tasks import generate_static_index_htmlgenerate_static_index_html.delay()# 清除首页的缓存数据cache.delete('index_page_data')def delete_model(self, request, obj):'''删除表中的数据时调用'''super().delete_model(request, obj)# 发出任务,让celery worker重新生成首页静态页from celery_tasks.tasks import generate_static_index_htmlgenerate_static_index_html.delay()# 清除首页的缓存数据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)

Django项目--首页静态化相关推荐

  1. 开源 java CMS - FreeCMS2.7 移动端首页静态化

    2019独角兽企业重金招聘Python工程师标准>>> 项目地址:http://www.freeteam.cn/ 移动端首页静态化 从左侧管理菜单点击首页静态化进入. 系统会直接提示 ...

  2. web开发中首页静态化处理

    首先为什么我们要将页面静态化呢? 首先我们来讲讲页面静态化的优点: 1:加快网站的运行速度,提升客户体验 2:减少对后端服务器的压力 其次我们再来讲讲页面静态化处理的一些要求? 跟客户信息相关的内容, ...

  3. PHP 实现全站静态化 首页静态化 列表页静态化 内容静态化 .

    首先先要把需要静态话的内容发到模版上去 eg.这个是静态化首页的 function staticIndex(){ $newslist = $article->getArticles(null,5 ...

  4. Django项目实战——5—(用户登录、首页用户名展示、项目阶段总结)

    1.用户登录 用户名登录逻辑分析 用户名登录接口设计 请求方式 请求参数:表单 响应结果:HTML 用户名登录逻辑实现 用户后端验证视图文件apps/users/views.py "&quo ...

  5. HTML页面静态化技术

    随着网站的内容的增多和用户访问量的增多,无可避免的是网站加载会越来越慢,受限于带宽和服务器同一时间的请求次数的限制,我们往往需要在此时对我们的网站进行代码优化和服务器配置的优化. 此文已Django的 ...

  6. 开源 java CMS - FreeCMS2.6 静态化管理

    2019独角兽企业重金招聘Python工程师标准>>> java 开源论坛系统http://javabbs.javaz.cn 项目地址:http://www.freeteam.cn/ ...

  7. 大型网站架构提速关键技术(页面静态化、memcached、Mysql优化)

    大型网站关键技术介绍 1. pv值(page views),访问量大 带来问题 a. 流量大 10000000*2m ->解决方案 买带宽 ,优化程序(处理图片) b. 并发量,同时访问网站的人 ...

  8. 页面静态化----------------------------------------个人笔记

    ***********************************************大型网站提速关键技术(页面静态化,mmecached,mysql优化)****************** ...

  9. CMS使用freemarker实现页面静态化

    (一) FreeMarker的优点 可以彻底的分离表现层和业务逻辑.曾经在使用JSP 开发过程中发现在页面中大量的存在业务逻辑的代码,使得页面内容凌乱,在后期大量的修改维护过程中就变得非常困难.但是, ...

最新文章

  1. 其实,咱们程序员过了30岁,还可以更牛逼!
  2. 电脑销售渠道_“新冠”影响下,平板电脑市场再现新商机
  3. 利用循环神经网络生成唐诗_11种主要神经网络结构图解
  4. Python基础:对象的深拷贝和浅拷贝的区别
  5. 【ZOJ 2974】Just Pour the Water(矩阵快速幂)
  6. RTP传输H264时的sps和pps的获取
  7. 【高清截图】UbuntuKylin 14.04 桌面版安装步骤
  8. cmd模式下如何从c盘转换到其他盘
  9. prometheus grafana 统计cpu个数
  10. java excel 单元格换行_单元格里的文字换行_ExcelHome - 全球极具影响力的Excel门户,Office视频教程培训中心...
  11. Windows 95 被做成了一款 app,我们在 MacBook 上体验了它
  12. 南京大学计算机技术考研,南京大学计算机技术考研
  13. 【Matlab三维路径规划】A_star算法机器人栅格地图三维路径规划【含源码 190期】
  14. HDwiki+discuz在启用https下的整合问题
  15. 中国浙江省动漫产业发展方向探析及投资决策建议报告2021-2027年
  16. 前端开发都有什么编程语言?
  17. 塑胶卡扣弹性计算公式_塑胶产品结构设计 卡扣
  18. Fastboot刷版本(单刷super.img )
  19. Poco C++库简介
  20. 接口参数加解密,代码无侵入这样做方便多了

热门文章

  1. 软件开发人员进修必备的20本书
  2. 无论是工作还是生活都要记住这些话
  3. avs 中国音视频标准DRA 中音频标准及应用
  4. 看穿面试这件事儿……
  5. x264 struct学习 1
  6. 解决 :IDEA 修改代码后 Local Changes 中没有提示待提交文件,代码自动提交了
  7. 解决 A component required a bean of ‘XXX.RoleService‘ that could not be found.
  8. C#将dll打包到程序中
  9. 关于更改当前公司(一)--ChangeCompany
  10. 批量替换 MySQL 指定字段中的字符串