zoukankan      html  css  js  c++  java
  • 模板二(标签)

    2、标签(tag)的使用
    使用大括号和百分比的组合来表示使用标签。
    语法:{% tag %}

    #常用标签
    {% if %}内容{% endif %} 计算一个变量值,如果是True,则会显示之间的内容
    说明:{% if %}标签可以和and、or或者not联合使用,但是在同一标签里面不能同时出现and和or

    {% for %}内容{% endfor %} 允许按顺序遍历一个序列中的各个元素,每次循环模板系统都会渲染之间的内容
    # 在标签里添加reversed来反序循环列表:
    { % for obj in list reversed %}
    ...
    { % endfor %}

    {% url %} 引用路由配置的地址

    {% with %}内容{% endwith %} 用更简单的变量名替代复杂的变量名

    {% verbatim %}内容{% endverbatim %} 禁止render

    {% load %}内容{% endload %} 某些应用提供自定义标签和过滤器库. 要在一个模板中访问它们, 使用 {% load %} 标签:

    #实例
    1.if标签的使用
    {% if num >= 90 and num <= 100 %}
    <p>优秀</p>
    {% elif num >= 80 %}
    <p>良好</p>
    {% elif num >= 70 %}
    <p>一般</p>
    {% elif num >= 60 %}
    <p>合格</p>
    {% else %}
    <p>不合格</p>
    {% endif %}

    2.for标签的使用

    forloop.counter,从1开始计数
    {% for l_1 in li %}
    <h1>{{ forloop.counter }}-{{ l_1 }}</h1>
    {% endfor %}

    forloop.counter0,从0开始计数
    {% for l_2 in li %}
    <h1>{{ forloop.counter0 }}-{{ l }}</h1>
    {% endfor %}

    forloop.revcounter,逆序从1开始计数
    {% for 1_3 in li %}
    <h2>{{ forloop.revcounter }}:{{ l }}</h2>
    {% endfor %}

    forloop.revcounter0,逆序从0开始计数
    {% for l_4 in li %}
    <h2>{{ forloop.revcounter0 }}:{{ l }}</h2>
    {% endfor %}

    {% for i in li %}
    <li>{{ forloop.counter0 }}----{{ i }}</li>
    empty,如果循环的东西是空的,则执行empty下面的
    {% empty %}
    <li>this is empty!</li>
    {% endfor %}

    3.url和csrf_token标签的使用
    <form action="{% url 'login' %}" method="poast">
    <p>姓名<input type="text" name="user"></p>
    <p>密码<input type="text" name="pwd"></p>
    <p><input type="submit"></p>
    用于防止跨站攻击验证
    {% csrf_token %}
    </form>

    4.with标签的使用
    {% with total=dfdfsfsdfdf %}
    {{ total }}
    {% endwith %}

    5.verbatim标签:此处的结果就是{{ 禁止render }}
    {% verbatim %}
    {{ 禁止render }}
    {% endverbatim %}


    3、自定义标签

    filter:传一个参数
    1.在APP中创建templatetags模板(即建立一个名为templatetags的文件夹)
    2.在模板里面创建任意.py文件;如:my_tag.py
    文件中内容固定部分
    from django import template
    from django.utils.safestring import mark_safe
    register = template.Library() # register是固定的,不能变
    # 自定义部分
    @register.filter
    def filter_multi(x, y):
    return x * y
    @register.simple_tag
    def add(x,y):
    return x+y
    3.在使用自定义simple_tag和filter的HTML文件中导入之前创建的.py文件, 如:my_tag.py。导入方式为
    { % load my_tag.py %}
    4.使用simple_tag和filter
    .html文件内容
    { % load
    xxx %} # 首行
    # num=12
    {{num | filter_multi: 2}} # 24
    {{num | filter_multi: "[22,333,4444]"}}
    { % simple_tag_multi 2 5 %} 参数不限, 但不能放在if和for语句中
    { % simple_tag_multi num 5 %}
    5.在setting中的INSTALLED_APPS配置当前APP
  • 相关阅读:
    async/await的一些用法
    软件须把握两个点: 错误可控, 复杂度可控
    C++内存管理原则
    *复赛前提醒
    一些好用的网站
    NOIP真题汇总
    信息学中的一些些数论
    [Luogu 1052] noip 05 过河
    浅谈概率期望动态规划
    [Luogu 1312] noip11 Mayan游戏
  • 原文地址:https://www.cnblogs.com/shadowfolk/p/15016044.html
Copyright © 2011-2022 走看看