模板层(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}}
posted @ 2019-03-28 23:19  Dandelion-L  阅读(729)  评论(0)    收藏  举报