1.Template和Context的导入
from django.template import Template, Context
2.生成静态页面
——在后端调用模板语法生成HTML页面,并保存到指定路径
2.1 我们想生成一个前端页面,代码如下
后端视图层传入的对象:
user_data = models.Userdata.objects.all()
<html> <body> {% for user in user_data %} <p>{{ user.user_agent }}</p> {% endfor %} </body> </html>
——在前端展示了数据库中所有的user_agent
数据
2.2 使用导入的两个模块在后端渲染前端页面
# 生成query_set对象 user_data = models.Userdata.objects.all() # Template的作用: # 创建模板字符串 加载模板 t = Template(''' <html> <body> {% for user in user_data %} <p>{{ user.user_agent }}</p> {% endfor %} </body> </html>''') # Context的作用: # 渲染模板字符串 创建上下文 ——将前端模板语法需要用到的 user_data 以字典的方式书写 c = Context({'user_data': user_data}) # 渲染模板并保存到文件 路径由自己指定 os.path.join html = t.render(c) with open(path, 'w') as f: f.write(html)
3.完整用法
——首次访问没有文件,调用模板语法创建静态文件并保存。之后访问便可以直接访问静态文件
from django.template import Template, Context def static_page(request): path = os.path.join('templates', 'static_page.html') if os.path.exists(path): return render(request, 'static_page.html', locals()) else: user_data = models.Userdata.objects.all() t = Template(''' <html> <body> {% for user in user_data %} <p>{{ user.user_agent }}</p> {% endfor %} </body> </html>''') c = Context({'user_data': user_data}) html = t.render(c) with open(path, 'w') as f: f.write(html) return render(request, 'static_page.html', locals())
标签:Context,Django,html,user,Template,path,data From: https://www.cnblogs.com/wellplayed/p/17865816.html