首页 > 其他分享 >页面静态化——Django中Template和Context模块的使用方法

页面静态化——Django中Template和Context模块的使用方法

时间:2023-11-29 20:57:27浏览次数:40  
标签:Context Django html user Template path data

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

相关文章

  • django制作简单网页
    django制作简单网页pycharm,新建project,选择django打开terminalpythonmanage.pystartappmyappmyapp文件夹右键新建文件夹:template,在此文件夹下新建about.html,contact.html,home.html其中的home.html:{%blockcontent%}<nav><ul><li>首页</li>......
  • Spring MVC学习随笔-控制器(Controller)开发详解:调用业务对象、父子工厂拆分(applicati
    学习视频:孙哥说SpringMVC:结合Thymeleaf,重塑你的MVC世界!|前所未有的Web开发探索之旅第四章、SpringMVC控制器开发详解二4.1核心要点......
  • 时区和国际化问题 django admin(管理后台的简单使用)
    1时区和国际化问题```pythonsetting.py中1后台管理汉语问题 LANGUAGE_CODE='zh-hans'#管理后台看到的就是中文2时区问题(使用东八区) TIME_ZONE='Asia/Shanghai'USE_TZ=False``` 2djangoadmin(管理后台的简单使用)```python0管理后台是django提供的可以快速对......
  • Django回顾
    提问#0把mysql全都卸载---》5.7版本---》把5.6卸载https://zhuanlan.zhihu.com/p/571585588#1保证能够链接到你同桌mysql 192.168.1.2521关闭防火墙  2知道你同桌ip  3链接:mysql navicate链接    #2保证你的django,你同桌可以访问-ht......
  • python脚本中调用django环境
    #在脚本中调用djagno服务importosif__name__=='__main__':#1引入django配置文件os.environ.setdefault('DJANGO_SETTINGS_MODULE','day67.settings')#2让djagno启动importdjangodjango.setup()#3使用表模型fromapp01impor......
  • Golang - context.TODO()和context.Background()的区别
    context.Background():上下文的默认值(创建上下文的默认起点),这个函数返回一个空context,返回值就是根节点,这只能用于最高等级(在main函数、初始化或顶级请求处理中),因为所有其他的上下文都应该从它衍生(Derived)出来context.TODO():通常用作占位符或临时解决方案,只在不确定应该使用哪种上......
  • django 创建model 并迁移生成表 在创建记录的写法流程
    django创建model并迁移生成表在创建记录的写法流程在Django中,创建一个新的模型并迁移生成表的步骤如下:在你的应用的models.py文件中定义模型。例如,我们创建一个名为Person的模型,它有name和age两个字段:fromdjango.dbimportmodelsclassPerson(models.Model):name=m......
  • django-单表操作
    一、常用字段和非常用字段#常用字段-IntegerField整数-AutoField自增字段-BooleanFieldbool类型-CharField字符串类型-DateField日期字段,日期格式 YYYY-MM-DD,相当于Python中的datetime.date()实例。-DateTimeField日期时间字段,格......
  • Django - 多条queryset合并,并排序
     fromitertoolsimportchainfromoperatorimportattrgetter#拿到多条querysetqueryset1=model.objects.filter(status=1).all()queryset2=model.objects.filter(status=2).all()#将上面两组查询结果合并,并设置排序方式:-create_timenew_queryset=sorted......
  • Django配置为连接到Microsoft SQL Server
    可以将Django配置为连接到MicrosoftSQLServer2019。为此,你需要更改数据库设置中的一些配置选项。首先,确保你已经安装了django和pyodbc这两个库: pipinstalldjangopyodbc 然后,你需要在settings.py文件中修改DATABASES部分。以下是连接到SQLServer的示例......