-
什么是页面静态化:
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 django django.setup() # 通过django template子应用下的loader文件进行模板的渲染 from django.template import loader from django.conf import settings # 导入book模型类 from book.models import BookInfo def 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': book.commentcount, '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)查看
到此結束,感謝閲讀~~~~~~~~~~~~~
小白自学,各路神仙勿喷
05-16
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交