python--Django之模板层(template)

Posted 嘟囔囔小孩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python--Django之模板层(template)相关的知识,希望对你有一定的参考价值。

1.模板层的功能

   为了更有逻辑的将数据库中的数据渲染到模板中。

2.模板语法:

    {{var_name}} #渲染变量用的

    {% url %}   #渲染标签用的

3.变量的渲染

例子:

def index(request):
    import datetime
    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})  

4.模板之过滤器

语法:

{{obj|filter__name:param}}

default

如果一个变量是false或者为空,使用给定的默认值。否则,使用变量的值。例如:

{{ value|default:"nothing" }}

length

返回值的长度。它对字符串和列表都起作用。例如:

{{ value|length }}

如果 value 是 [‘a‘, ‘b‘, ‘c‘, ‘d‘],那么输出是 4。

filesizeformat

将值格式化为一个 “人类可读的” 文件尺寸 (例如 ‘13 KB‘‘4.1 MB‘‘102 bytes‘, 等等)。例如:

{{ value|filesizeformat }}

如果 value 是 123456789,输出将会是 117.7 MB。  

date

如果 value=datetime.datetime.now()

{{ value|date:"Y-m-d" }}

slice

如果 value="hello world"

{{ value|slice:"2:-1" }}

truncatechars

如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“...”)结尾。

参数:要截断的字符数

例如:

{{ value|truncatechars:9 }}

如果value“Joel 是 >,输出将为“Joel i ...”

safe

Django的模板中会对HTML标签和JS等语法标签进行自动转义,原因显而易见,这样是为了安全。但是有的时候我们可能不希望这些HTML元素被转义,比如我们做一个内容管理系统,后台添加的文章中是经过修饰的,这些修饰可能是通过一个类似于FCKeditor编辑加注了HTML修饰符的文本,如果自动转义的话显示的就是保护HTML标签的源文件。为了在Django中关闭HTML的自动转义有两种方式,如果是一个单独的变量我们可以通过过滤器“|safe”的方式告诉Django这段代码是安全的不必转义。比如:

value="<a href="">点击</a>"
{{ value|safe}}

 

5.模板之标签

标签看起来像是这样的: {% tag %}。标签比变量更加复杂:一些在输出中创建文本,一些通过循环或逻辑来控制流程,一些加载其后的变量将使用到的额外信息到模版中。

一些标签需要开始和结束标签 (例如{% tag %} ...标签 内容 ... {% endtag %})。

for标签

遍历每一个元素

{% for person in person_list %}
    <p>{{ person.name }}</p>
{% endfor %}

可以利用{% for obj in list reversed %}反向完成循环。

遍历一个字典

{% for key,val in dic.items %}
    <p>{{ key }}:{{ val }}</p>
{% endfor %}

 


以上是关于python--Django之模板层(template)的主要内容,如果未能解决你的问题,请参考以下文章

Python Django设计模式及模板层

Python Django设计模式及模板层

python Django教程 之模板渲染循环条件判断常用的标签过滤器

Python - Django - 模板语言之自定义过滤器

powershell 这将复制SharePoint网站。首先使用原始网站使用的相同模板制作空白网站。如果templa,这将失败

python--django之url控制器