Django之模板

  模板就是展示给用户的网页,其中包含的可变数据就是在数据库中获取的。

模板语法之变量

句点符  {{var}}

在views视图函数中传递数据给模板,就可以在模板中以句点符获取

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})
View Code

模板下

<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>

 这样再在浏览器上渲染就是带着具体数据的一些<h4>

模板之过滤器

语法:{{obj | filter__name:param}}

default

  如果变量为空或者false,使用给定的默认值,否则为变量值。例如:{{ value|default:"nothing" }}

length

  返回变量的长度,对字符串和列表都适用。例如:{{ value|length }}如果 value 是 ['a', 'b', 'c', 'd'],那么输出是 4。

filesizeformat

  将值格式化为人类可读的文件大小,例如:{{ value|filesizeformat }}如果 value 是 123456789,输出将会是 117.7 MB。  

date

 转化成日期格式 {{ value|date:"Y-m-d" }} 

slice

切片如:{{ value|slice:"2:-1" }}

truncatechars

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

参数:要截断的字符数     例如:{{ value|truncatechars:9 }}

safe

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

比如:{{ value|safe}}

模板之标签    {% tag%}

for标签

遍历列表元素

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

遍历字典

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

 循环序号可以通过{{forloop}}显示

for。。empty标签

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

{% empty %}
    <p>sorry,no person here</p>
{% endfor %}

if标签

{% if num > 100 or num < 0 %}
    <p>无效</p>
{% elif num > 80 and num < 100 %}
    <p>优秀</p>
{% else %}
    <p>凑活吧</p>
{% endif %}

with

使用一个简单地名字缓存一个复杂的变量,当你需要使用一个“昂贵的”方法(比如访问数据库)很多次的时候是非常有用的

例如:

{% with total=business.employees.count %}
    {{ total }} employee{{ total|pluralize }}
{% endwith %}

csrf_token

这个标签用于跨站请求伪造保护,主要用在form表单提交。

原文地址:https://www.cnblogs.com/yuliangkaiyue/p/9932591.html