zoukankan      html  css  js  c++  java
  • Django web框架之模板


    1 模板:
    什么是模板?
      html+模板语法

      模版包括在使用时会被值替换掉的 变量,和控制模版逻辑的 标签


    2 模板语法:

    1 变量:{{}}

    深度查询: 通过句点符号 .
    
    过滤器 filter
    
    {{var|filter_name}}
    

      


    2 标签: {% tag %}

    for
    if else

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

    for ... empty

    for 标签带有一个可选的{% empty %} 从句,以便在给出的组是空的或者没有被找到时,可以有所操作。

    {% for person in person_list %}
        <p>{{ person.name }}</p>
    
    {% empty %}
        <p>sorry,no person here</p>
    {% endfor %}

    if 标签

    {% if %}会对一个变量求值,如果它的值是“True”(存在、不为空、且不是boolean类型的false值),对应的内容块会输出。

    复制代码
    {% 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

    这个标签用于跨站请求伪造保护

    3 自定义过滤器和标签

    步骤:
    1 在settings中的INSTALLED_APPS,是否有当前应用
    
    2 在应用中创建一个templatetags
    
    3 在templatetags中创建py文件:mytag.py
    
    4 在mytag.py中:
    引入:
    from django import template
    from django.utils.safestring import mark_safe
    
    register = template.Library() #register的名字是固定的,不可改变
    
    5 定义过滤器和标签
    @register.filter
    def multi(x,y):
    return x*y
    
    
    @register.simple_tag
    def multiTag(x,y,z):
    return x*y*z
    
    6 在引用模板中导入:{% load myTag %}
    
    7 调用:
    过滤器: {{var|filter_name:参数}} # 参数只能是一个
    
    标签: {% simple_tag 参数1 参数2 ... %}
    

     

    对比过滤器与自定义标签的使用:
    过滤器函数的参数只能有两个,自定义标签无参数限制
    过滤器可以与逻辑标签共同使用,比如if标签。自定义标签不可以。

  • 相关阅读:
    织梦内容模型自定义字段设置一个随机数
    网页禁止右键查看源码屏蔽键盘事件
    面试官:如何防止 Java 源码被反编译?我竟然答不上来。。
    Elastic Job 同城主备、同城双活,高可用必备~
    再见,Spring Security OAuth!!
    怎么让 Linux 进程在后台运行?
    30 个 ElasticSearch 调优知识点,都给你整理好了!
    Spring Boot 2.5.4 发布,2.2.x 正式结束使命!
    移动端与服务器端之间的 token 怎么设计?
    最新数据库排行出炉,SQL Server 暴跌。。
  • 原文地址:https://www.cnblogs.com/supery007/p/7725299.html
Copyright © 2011-2022 走看看