記事のディレクトリ
ホームページ静的
前書き
- シナリオ:データ防御が非常に小さい場合、ページを静的にすることができます。ホームページ静的は、ホームページのレンダリングされたhtmlページを保存することです。
- 利点:
- Djangoを実行する必要はありません
- mysql(データベース)を実行する必要はありません
- パフォーマンスの向上とサーバーの実行効率の向上
ホーム頻繁に使用されるソリューション
時限世代
レンダリングされたhtmlページはどこにありますか?
レンダリング関数は、レンダリングされたテンプレートページを含むHttpResponseオブジェクトを返すことがわかっています。これが私たちに必要なものです。
- 次に、次を見つけます。HttpSesponseオブジェクトにはプロパティがあり、本文に応答して応答を取得できます。これは、必要なテンプレートレンダリングであり、静的なものを保存する必要があります。
静的ページのコードを保存します(部分的)
- この静的ページの保存を生成するために、ファイルを作成し、その中にメソッドを記述します
# 构造上下文
context = {
'categories': categories, # 三级分类
'contents': contents, # 轮播图
}
response = render(None, 'index.html', context)
# 2.拿到html
html_str = response.content.decode()
# 写文件
with open(os.path.join(settings.BASE_DIR, 'static/index1.html'), 'w') as f:
f.write(html_str)
タイミングの設定方法は?このメソッドを定期的に呼び出して、新しい静的ページを生成します
djangoがLinuxタイマーを呼び出すために使用されるインストールパッケージ
# 安装
pip install django-crontab
# 注册
INSTALLED_APPS = [
'django_crontab', # 定时任务
]
# 设置定时任务
定时时间基本格式 :
* * * * *
分 时 日 月 周 命令
M: 分钟(0-59)。每分钟用 * 或者 */1 表示
H:小时(0-23)。(0表示0点)
D:天(1-31)。
m: 月(1-12)。
d: 一星期内的天(0~6,0为星期天)。
# 例子
CRONJOBS = [
# 每5分钟生成一次首页静态文件
('*/5 * * * *', 'contents.crons.generate_index_html', '>> ' + os.path.join(os.path.dirname(BASE_DIR), 'logs/crontab.log'))
]
# 解决中文问题
# 在定时任务中,如果出现非英文字符,会出现字符异常错误
CRONTAB_COMMAND_PREFIX = 'LANG_ALL=zh_cn.UTF-8'
# 管理定时任务
# 添加定时任务到系统中
$ python manage.py crontab add
# 显示已激活的定时任务
$ python manage.py crontab show
# 移除定时任务
$ python manage.py crontab remove
- これらのコマンドを使用してタイマーを管理できるようになりました。
その後、静的メソッドは5分ごとに自動的に実行されます。