django模板语法使用的两种方式 模板语法之变量
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>
# 方式一
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>
分类:
Python 基础学习
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战