Django学习之模板层二之标签

2019-04-13 17:37发布

4>模板语法之标签    其实之前也接触过标签,反向解析,HTML通过别名获取实际path,就是通过{% url 'tag' %}获取的。
    没错,{% %}这些就是标签,标签比变量更加复杂:一些在输出中创建文本,一些通过循环或逻辑来    控制流程,一些加载其后的变量将使用到的额外信息到模版中。一些标签需要开始和结束标签     (例如{% tag %} ...标签 内容 ... {% endtag %})。
    先说几个比较重要的标签 for标签 和 if标签,以及with标签
    ---->for标签
    
    
    若想取到元素对应的序号,要引入{{ forloop }}来显示,注意这个函数只有放在for循环里面才有效,写法如下:
    
    {{ forloop.counter}},计数从1开始,还一个{{ forloop.counter0}},计数从0开始
    
    forloop的其他方法    
    还一个 for..empty..
    for 标签带有一个可选的{% empty %} 从句,以便在给出的组是空的或者没有被找到时,可以有所操作。
    写法如下,empty也在for循环里面,相当于一个分支了,取不到值才会走下面。
    
    
    ---->if标签
    {% if %}会对一个变量求值,如果它的值是“True”(存在、不为空、且不是boolean类型的false值),    对应的内容块会输出。
    仿登陆的例子写个实例
    
    
    当然,也可以插入elif,结构如下
    
     ---->with标签   
        使用一个简单地名字缓存一个复杂的变量,当你需要使用一个“昂贵的”方法(比如访问数据库)很多次        的时候是非常有用的。
        一个简单的例子,如下:
        
5>模板语法之自定义标签    先看下之前的本链接跳转被forbidden的问题,    
    
    之前是说了一方法:注释setting的一行代码解决这个问题,其实这种
    处理方法是不恰当的,因为之前类似于是把Django的一层vrsf保护机制给取消掉了,正常应该怎么处理呢
    这里,引入{% csrf_token %}标签来解决这个问题,
    {% csrf_token %}:这个标签用于跨站请求伪造保护
    怎么用呢?
    很简单,只需要在html的form表单里面引用下就好了,如下
    
    
    
    我们看下浏览器其实做了啥,为何加上这个标签就可以了呢