900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > django笔记--页面静态化

django笔记--页面静态化

时间:2019-07-06 15:45:59

相关推荐

django笔记--页面静态化

什么是页面静态化:

1)减少数据库查询次数

2)提高页面响应效率

页面静态化的作用:

1)将动态渲染生成的页面结果保存成html文件,放到静态文件服务器中。

2)用户直接去静态服务器,访问处理好的静态html文件。

页面静态化的注意点

1)页面中用户相关数据不能静态化。

2)动态变化的数据不能静态化。

django实现页面静态化的步骤:

1)新建一个子应用book(python manage.py startapp book):

2) 在配置文件中注册子子应用,并且配置数据库:

INSTALLED_APPS = ['book.apps.BookConfig',]DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql', # 数据库引擎'HOST': 'xxxxxxx', # 数据库主机'PORT': 3306, # 数据库端口'USER': 'root', # 数据库用户名'PASSWORD': 'xxxxxxxx', # 数据库用户密码'NAME': 'test' # 数据库名字}}

3)在book子应用下的modles文件下创建模型(并通过makemigrations,migrate命令生成迁移文件,迁移数据库):

from django.db import models# Create your models here.# 准备书籍列表信息的模型类class BookInfo(models.Model):# 创建字段,字段类型...name = models.CharField(max_length=20, verbose_name='名称')pub_date = models.DateField(verbose_name='发布日期', null=True)readcount = models.IntegerField(default=0, verbose_name='阅读量')commentcount = models.IntegerField(default=0, verbose_name='评论量')is_delete = models.BooleanField(default=False, verbose_name='逻辑删除')

4)迁移后的数据库(插入数据):

insert into bookinfo(name, pub_date, readcount,commentcount, is_delete) values('射雕英雄传', '1980-5-1', 12, 34, 0),('天龙八部', '1986-7-24', 36, 40, 0),('笑傲江湖', '1995-12-24', 20, 80, 0),('雪山飞狐', '1987-11-11', 58, 24, 0);

5)准备好的Django中的模板文件:

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>{{ name }}</title></head><body><ul><li>{{ name }}</li><li>{{ pub_date }}</li><li>{{ readcount }}</li><li>{{ commentcount }}</li></ul></body></html>

6)在book子应用文件夹下新建utils.py文件,并根据需求写入相应代码:

import os# 导入django配置文件if not os.getenv('DJANGO_SETTINGS_MODULE'):os.environ['DJANGO_SETTINGS_MODULE'] = 'testdjango.settings'import djangodjango.setup()# 通过django template子应用下的loader文件进行模板的渲染from django.template import loader from django.conf import settings# 导入book模型类from book.models import BookInfodef generate_static_html(pk):try:book = BookInfo.objects.get(id=pk)except BookInfo.DoesNotExist:return# 构建上下文context = {'name': book.name,'pub_date': book.pub_date,'commentcount': mentcount,'readcount': book.readcount,}# 通过loader文件中的get_template方法加载模板文件template = loader.get_template('book.html')# 渲染上下文到模板文件中book_html_text = template.render(context=context)# 构建保存路径path = os.path.join(settings.BASE_DIR, 'static/' + str(book.id) + '.html')with open(path, 'w', encoding='utf-8') as f:f.write(book_html_text)# 程序入口if __name__ == '__main__':for i in range(1, 5):print(i)generate_static_html(i)

7)在终端下进行入book子应用文件夹下,python utils.py运行此文件或者右击运行,生成以下四个html文件

8)通过python自带的文件服务器查看效果,进入static文件夹,运行 python -m http.server 8080 --bind 127.0.0.1

9)查看

到此結束,感謝閲讀~~~~~~~~~~~~~

小白自学,各路神仙勿喷

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。