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. sql isnull函数的使用(转载)
  2. Grub及内核的简单介绍安装
  3. MyBatis入门和全局配置文件介绍
  4. oracle表分层,sql – 对非分层数据的Oracle分层查询
  5. 深度学习会不会被取代?深度学习必看发展史
  6. 创建新DB和新用户DBeaver连接
  7. java实现zip压缩文件(同一文件夹下的多个文件夹打成一个zip包)
  8. 通过Gogs部署git仓库
  9. ALGORITHMS
  10. 报表如何同步用户数据集 1
  11. HTTPConnectionPool(host:XX)Max retries exceeded with url 解决方法
  12. Kali Linux 更新了1.0.9a,第一时间分享
  13. awk学习笔记(16) - 字符串函数
  14. java字典序列化_在Python中解析序列化Java对象
  15. HarmoneyOS鸿蒙系统零代码编程入门
  16. 《数据库系统基础教程》读书笔记——第二章 关系数据模型(1)
  17. IDEA汉化包安装和卸载
  18. html另存word或excel,excel另存为word
  19. 阿里巴巴矢量图库,图标导入的简单使用
  20. 源IP源MAC目的IP目的MAC,在整个网络中的变化

热门文章

  1. C++中lock_guard的学习
  2. 使用Remix编写Solidity语言的小例子
  3. 度量术语之二:应用类和开发类生产率(实际度量案例)
  4. 切记!职场邮件需注意的细节
  5. http协议与web本质
  6. ffmpeg 过程分析
  7. 详解 springboot - 查看、修改内置 tomcat 版本
  8. 使用SpringBoot yml配置文件
  9. Flask-1-05-CookieSession
  10. vue-axios interceptors