django模板语法使用的两种方式 模板语法之变量

模板语法之变量

DTL:Django Template Language

  DTL 是指 Django 模板语言(Django Template Language),它是 Django 框架中用于构建动态网页视图的一种模板系统。DTL 提供了一种简单且强大的方式来定义和渲染 HTML 或其他类型文本的结构和内容。

在 DTL 中,开发者可以创建包含变量、标签和过滤器的模板文件。变量用于显示从后端传递的数据,标签用于执行控制流操作(如循环、条件判断等),过滤器则用于格式化或处理变量的输出结果。

 

1 模板中使用 {{python变量}}


我们需要在视图函数中为模板test.html的变量名msg、li、dic、obj、obj_li赋值,views.py内容如下

复制代码
from django.shortcuts import render

def test(request):
    # 传给模板的变量值可以是任意python类型,如下
    msg='hello world'
    dic={'k1':1,'k2':2}
    class Person(object):
        def __init__(self,name,age):
            self.name=name
            self.age=age

    obj=Person('egon',18)
    li = [1,'aaa',obj]

    return render(request,'test.html',{'msg':msg,'dic':dic,'obj':obj,'li':li})
    # 注意:
    # 1、render函数的第三个参数包含了要传给模板的变量值,是一个字典类型,该字典中的key必须与模板文件中的变量名相对应,render函数会去templates目录下找到模板文件,然后根据字典中的key对应到模板文件中的变量名进行赋值操作,最后将赋值后的模板文件内容返回给浏览器
    # 2、可以将render函数的第三个参数简写为locals(),如下
    return render(request,'test.html',locals()) #locals()会将函数test内定义的名字与值转换为字典中的k与v
复制代码

 

test.html

复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p>{{ msg }}</p>
<p>{{ dic }}</p>
<p>{{ obj }}</p>
<p>{{ li }}</p>
</body>
</html>
复制代码

 

 

 

django模板使用的两种方式

# 方式一
return render(request,'time.html',context={'current_date':str(now),'title':'lqzNB'})

# 方式二(页面静态化,提高网站并发量)

复制代码
now=datetime.datetime.now()
from day65 import settings
import os
path=os.path.join(settings.BASE_DIR,'templates','time.html')
ss=open(path,'r',encoding='utf-8').read()
t=Template(ss)
c=Context({'current_date':str(now),'title':'lqzNB'})
html=t.render(c) # html是渲染后的字符串
return HttpResponse(html)
复制代码

 

深度查询之句点符的使用

当视图函数传给模板的值中包含多个元素时,若想取出其中的单个元素,就必须使用句点符了。

句点符既可以引用容器类型的元素,也可以引用对象的方法,如下

test.html

复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<!--调用字符串对象的upper方法,注意不要加括号-->
<p>{{ msg.upper }}</p>

<!--取字典中k1对应的值-->
<p>{{ dic.k1 }}</p>

<!--取对象的name属性-->
<p>{{ obj.name }}</p>

<!--取列表的第2个元素,然后变成大写-->
<p>{{ li.1.upper }}</p>

<!--取列表的第3个元素,并取该元素的age属性-->
<p>{{ li.2.age }}</p>


</body>
</html>
复制代码

 

posted @   朱饱饱  阅读(187)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示