模板层(template)(模板语法、自定义模板过滤器及标签、模板继承)
模板层(template)(模板语法、自定义模板过滤器及标签、模板继承)
python的模板:HTML代码+模板语法
模板包括在使用时会被值替换掉的变量,和控制模板逻辑的标签
#视图函数
import datetime
now=datetime.datetime.now()
return render(req,'current_datetime.html',{'current_date':str(now)[:19]})
模板语法之变量
在Django模板中用句点来遍历复杂数据结构
语法:{{var_name}}
views:
import datetime
def index(request):
s="hello"
l=[111,222,333] # 列表
dic={"name":"yuan","age":18} # 字典
date = datetime.date(1993, 5, 2) # 日期对象
class Person(object):
def __init__(self,name):
self.name=name
person_yuan=Person("yuan") # 自定义类对象
person_egon=Person("egon")
person_alex=Person("alex")
person_list=[person_yuan,person_egon,person_alex]
return render(request,"index.html",{"l":l,"dic":dic,"date":date,"person_list":person_list})
#return render(request,"index.html",locals())
#这种方法只能用在键和值的变量名相同的情况下,且会导入所有变量,即使不需要用到的也会被导入
template:
<h4>{{s}}</h4>
<h4>列表:{{ l.0 }}</h4>
<h4>列表:{{ l.2 }}</h4>
<h4>字典:{{ dic.name }}</h4>
<h4>日期:{{ date.year }}</h4>
<h4>类对象列表:{{ person_list.0.name }}</h4>
模板之过滤器
default
#如果一个变量是false或者为空,使用给定的默认值,否则使用变量的值。例如:
{{value|default:"nothing"}}
length
#返回值的长度,对字符串和列表都起作用
{{ value|length }}
如果 value 是 ['a', 'b', 'c', 'd'],那么输出是 4。
date
#如果 value=datetime.datetime.now(),将返回当前时间的年-月-日格式
{{ value|date:"Y-m-d" }}
slice
{{ value|slice:"2:-1" }}
#如果 value="hello world",则结果为ello worl
safe
'''Django的模板中会对HTML标签和JS等语法标签进行自动转义,原因显而易见,这样是为了安全。但是有的时候我们可能不希望这些HTML元素被转义,比如我们做一个内容管理系统,后台添加的文章中是经过修饰的,这些修饰可能是通过一个类似于FCKeditor编辑加注了HTML修饰符的文本,如果自动转义的话显示的就是保护HTML标签的源文件。为了在Django中关闭HTML的自动转义有两种方式,如果是一个单独的变量我们可以通过过滤器“|safe”的方式告诉Django这段代码是安全的不必转义。比如:'''
value="<a href="">点击</a>"
{{ value|safe}}

浙公网安备 33010602011771号