一. 前言

一个网页会有很多数据是不需要经常变动的,比如首页变动频率低而访问量大,我们可以把它静态化,这样就不需要每次有请求都要查询数据库返回可以减少服务器压力
我们可以使用Django模板渲染功能完成页面渲染

注意

二. 页面静态化解释实现

所谓页面静态化,就是提前渲染完整html页面,以静态文件的形式存起来,那么下一次浏览器访问时候直接返回该静态文件可以
1)减少数据库查询次数
2)提高页面响应效率

1.页面静态化的作用

1)将动态渲染生成页面结果保存html文件放到静态文件服务器中
2)用户直接去静态服务器,访问处理好的静态html文件
在这里插入图片描述

2.页面静态化的注意

1)页面用户相关数据不能静态化。
2)动态变化的数据不能静态化。

3.页面静态化实现

在Django项目新建一个py文件,里面一个渲染首页方法

from django.template import loader
def generate_static_index_html():
    # 先获取首页模版文件
    template = loader.get_template('index.html')
    # 要渲染的数据(动态数据)
    context = { 
        'categories': None, 
        'contents': None
    }
    # 得到数据后后的渲染完整页面
    page = template.render(context)
    # 把渲染后的文件保存起来
    with open('XXXXXXX/front_end_pc/index.html', 'w') as f:
        f.write(page)

此时,cd到该py文件所在目录并且执行该文件即可得到静态化的页面

二. 定时任务 – Crontab

虽然页面不是经常更新,但是需要更新时候也不可能每次都人为地去执行程序渲染新的页面。此时我们可以使用定时任务自动执行

1. 安装crontab

pip install django-crontab -i https://pypi.tuna.tsinghua.edu.cn/simple

2. 在配置文件注册

打开Django配置文件settings.py,在INSTALLED_APPS列表注册crontab

INSTALLED_APPS = [
      .....
    'django_crontab', # 定时任务
]

3. 制定定时规则

Crontab什么时候执行,时间间隔多少,这些都需要在Django配置文件settings.py里进行设置。新建一个CRONJOBS列表

# 指定定时任务规则
CRONJOBS = [
    # 写法是:(时间规则,要执行的任务,">>",日志文件位置)
    # 每1分钟生成一次首页静态文件
    # 分 时 日 月 周
    ('*/1 * * * *', 'apps.contents.crons.generate_static_index_html', '>> ' + os.path.join(BASE_DIR, 'logs/crontab.log'))
    # 每月的23日12点1分0秒执行一次
    # ('1 12 23 * *', 'apps.contents.crons.generate_static_index_html', '>> ' + os.path.join(BASE_DIR, 'logs/crontab.log'))
]

如果在执行过程遇到英文字符引发的字符异常可以添加以下的配置

# ubuntu
CRONTAB_COMMAND_PREFIX = 'LANG_ALL=zh_cn.UTF-8'
# mac
CRONTAB_COMMAND_PREFIX = 'LANG=zh_cn.UTF-8'

4. 管理任务

打开Django提供的shell,执行下面的命令管理任务

# 添加定时任务
python manage.py crontab add
# 显示激活的定时任务
python manage.py crontab show
# 移除定时任务
python manage.py crontab remove

以上就是Django – 页面静态化和crontab定时任务的基本使用介绍,希望对你有所帮助!

原文地址:https://blog.csdn.net/qq_43030934/article/details/131130646

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_46080.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注