zoukankan      html  css  js  c++  java
  • django 模版标签笔记

    一、模板变量笔记:
    1、在模版中使用变量,需要将变量放到‘{{}}’中。'{{ 变量 }}'
    2、如果想访问对象的属性,可以通过'对象.属性名'的方式访问
    3、如果想要访问一个字典的key对应的value,那么只能通过'字典.key'
    4、因为在访问字典的'key'时候也用‘.’来访问,因此不能在字典中定义本身就有的属性名当做‘key’,否则字典的那个属性将为编程字典中的key了
    5、如果想要访问列表或者元组,那么也是通过‘.’的方式访问,不用通过'[]'的方式访问。

    二、前端模板中的for循环
    1、'if'标签:if标签相当于‘python’中的if语句,有'elif'和'else'相对应,但是所有的标签都需要用标签符号('{%%}')进行包裹。if标签中可以使用'=='、!=、<、>、<=、>=、in、not in、is、is not'等判断运算符。等判断运算符。
    2、'for ... in ...'标签:用法和python中的一样,可以遍历列表、元组、字符串、字典等一切可以遍历的对象。
    如果想要反向遍历,那么在遍历的时候加上'reversed'。实例代码:

        {% for student in students%}
            <p>{{ student.name }} </p>
            <p>{{ student.age }} </p
        {% endfor %}

    3、遍历字典:实例代码:

    {% for key,value in students.items %}
    <p>{{key}}:{{value}}</p>
    {% endfor %}

    4、在for循环中提供了一些参数:
    <1> forloop.counter:当前循环的下标。以1作为起始值。
    <2> forloop.counter0:当前循环的下标。以0作为起始值。
    <3> forloop.revcounter:当前循环的反向下标值。比如列表有10个元素,那么第一次遍历这个属性是等于10,第二次是9,以此类推。并且是以1作为最后一个元素的下标。
    <4> forloop.revcounter0:与forloop.revcounter类似,只不过最后一个元素的下标是0.
    <5> forloop.first:是否为第一次遍历,适用于针对第一行设置不同时使用。
    <6> forloop.last:是否为最后一次遍历,适用于针对最后一行设置不同时使用。
    <7> forloop.parentloop:如果有多个循环嵌套,那么这个属性代表的是上一级的for循环。
    5、for...in...empty:这个使用跟for...in...一样,其不同之处是,在遍历对象时,如果没有元素的情况下,会执行'empty'中的内容。示例代码:

    {% for studet in students %}
        <li>{{ student }}</li>
    {% empty %}
        暂时没有学生
    {% endfor %}

    三、前端模版中使用with标签
    在模版中定义变量。有时候一个变量访问的时候比较复杂,那么可以先把这个复杂的变量缓存到一个变量上,以后直接使用这个变量就可以了。

    1     context ={
    2         'students': ['小明','小溪']
    3     }
    4     
    5     {% with list1=students.1 %}
    6         <p>{{ list1 }}</p>
    7     {% endwith %}

    在使用with标签时需要注意:
    1、在with语句中定义的变量,只能在{% with %}{% endwith %}中使用,不能在这个标签外使用。
    2、定义变量的时候,不能在等号左右两边留空格。比如{% with list1 = students.1 %}是错误的。
    3、还有另外一种写法同样也是支持的:

    1         {% with students.1 as list1 %}
    2             <p>{{ list1 }}</p>
    3         {% endwith %}

    四、url标签
       在模版中,我们经常要写一些'url',当我们直接在页面里使用硬编码写死这个'url'时,后期维护起来成本是很高的。这时可以使用url标签。用法类似于django中的'reverse'。

    <a href="{% url 'book:list' %}'">图书列表页</a>

      如果需要传递参数到后端时怎么办?这时可以使用位置参数或者关键字参数。记住,两者不能同时使用,且在有多个参数时,使用空格进行分割,不要使用','。

        # path部分
        path('detail/<book_id>/<chapter_id>/', views.book_detail, name='detail')
        
        # 前端使用url反转,使用位置参数
        <a href="{% url 'book:detail' 1 1 %}'">图书详情页</a>
        
        # 前端使用url反转,使用关键字参数
        <a href="{% url 'book:detail' book_id=1 chapter_id=1 %}'">图书详情页</a>

    五、spaceless标签:移除HTML标签中的空白字符,包括空格、tab键、换行等。示例代码如下:

    1     {% spaceless %}
    2         <p>
    3             <a href='foo/' >Foo</a>
    4         </p>
    5     {% endspaceless %}

    渲染后:

    <p><a href='foo/' >Foo</a></p>

    spaceless只会移除html标签之间的空白字符。而不会移除标签与文本之间的空白字符。例如:

        <span>
            不会压缩
        </span>

    这时是不会压缩span标签里的。

    六、autoescape标签
    开启或关闭这个标签内元素的自动转义功能。自动转义是可以将一些特殊字符转义成html语法能识别的字符。比如<会被转义成&lt,而>会被转义成&gt。模版中默认是开启了自动转义的。实例代码如下:

    1     # 传递的上下文信息
    2     context = {
    3         "info": "<a href='www.baidu.com'>百度</a>"
    4         }
    5     # 模版中关闭自动转义
    6     {% autoescape on %}
    7         {{ info }}
    8     {% endautoescape %}

    这时在文中就会显示为百度的超链接。如果将on改为off,则会显示成一个普通字符串。

    七、verbatim标签:默认会在前端模版中解析那些特殊字符,比如{%和%}以及{{等等。如果你在某个代码片段中不想使用模版解析引擎,只需将代码放在verbatim标签中即可。

    1     {% verbatim %}
    2         {{ if }}
    3     {% endverbatim %}
  • 相关阅读:
    ElasticSearch(7.13.1) 作为服务启动(Windows)
    ElasticSearch(7.13.1) 安装与命令行启动
    Spring Boot 监听器 通过Session监听在线人数
    layui 弹出层icon
    Spring Boot 定时器 系统时间测试
    Spring Boot 拦截器
    Tomcat部署
    SpringBoot学习之整合Swagger
    浅谈Mybatis持久化框架在Spring、SSM、SpringBoot整合的演进及简化过程
    SpringBoot学习之整合Druid的简单应用
  • 原文地址:https://www.cnblogs.com/xshan/p/12114969.html
Copyright © 2011-2022 走看看