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. 在 Msys pacman安装vim后遇到的abcd与backspace问题..
  2. intro to Apache Log4j 2
  3. 新手学java还是python知乎_编程初学者应该先学C++、Java还是Python?
  4. java基础—IO流——复制一个文件到当前文件夹中
  5. 地宫取宝|2014年蓝桥杯B组题解析第九题-fishers
  6. day 7-13 数据库的数据类型
  7. php获取工作日时间,ThinkPHP中获取指定日期后工作日的具体日期方法
  8. table合并单元格_element ui el-table 合并单元格
  9. 埃及分数怎么计算java_贪心算法之埃及分数问题(附c++源代码)
  10. 第十二章课下测试补交博客
  11. [Flex] Flex 控件类 的自定义事件添加
  12. RabbitMq异常处理
  13. 爬虫实例3 批量抓取数据之异步请求(ajax)
  14. 【转】Nutch源代码研究 网页抓取 数据结构
  15. 正好股票开户指数大跌分解比较严重
  16. BZOJ2818 Gcd
  17. Android ListView异步获取网络图片
  18. 2023年全国最新二级建造师精选真题及答案56
  19. 近期业务大量突增微服务性能优化总结-2.开发日志输出异常堆栈的过滤插件
  20. hadoop不在sudoers文件中。此事将被报告。 解决方法

热门文章

  1. IPFS的相关操作命令
  2. 广州市科目三电子路考--大观路通过经验
  3. Tiny Core Linux 4.5 发布,微型 Linux 操作系统
  4. tcpmp 编译 源代码分析
  5. 关于编译FFMPEG的初级教程
  6. linux : ulimit 命令使用说明、参数解说
  7. 点击表格弹窗获取另外一套数据之后,原表格相关数据的调用
  8. SharpZipLib 压缩ZIP导出
  9. 背包问题(动态规划)
  10. Codeforces 899D Shovel Sale