zoukankan      html  css  js  c++  java
  • Django模版系统

    一 、常用语法:

      1:{{ }} 表示变量操作,在模版渲染的时候替换成值

      2:{% %} 表示逻辑相关的操作

    二、变量操作:

      1:变量由字母数字和下划线组成

      2:模版中支持的写法

    {# 取l中的第一个参数 #}
    {{ l.0 }}
    {# 取字典中key的值 #}
    {{ d.name }}
    {# 取对象的name属性 #}
    {{ person_list.0.name }}
    {# .操作只能调用不带参数的方法 #}
    {{ person_list.0.dream }}

    注:当模版系统遇到一个(.)时,会按照如下的顺序去查询

      1、在字典中查询

      2、属性或者方法的查询

      3、数字索引

    Filters:过滤器

      用来修改变量的显示结果

      语法: {{ value|filter_name:参数 }}

      “|”左右没有空格

      1)default

      {{ value|default:"nothing"}} : 如果value值没传的话就显示nothing

      2)filesizeformat

      将值格式化为一个‘人类可读的“文件尺寸”’(例如‘13kb,4.1mb,‘100bytes’’等等)

      例如:{{ value|filesizeformat }} 如果value是123456789,输出将会是117.7mb

      3)add

      给变量加参数

      {{ value|add:"2" }}:value是数字4,则输出的结果为6

      {{ first|add:second }}:如果first是[1,2,3],second是[4,5,6],那输出的结果是[1,2,3,4,5,6]

      4)lower

      {{ value|lower }} 小写

      5)upper

      {{ value|upper}}大写

      6)title

      {{ value|title }}标题

      7)ljust

      {{ value|ljust:"10" }}左对齐

      8)rjust

      {{ value|rjust:"10" }}右对齐

      9)center

      {{ value|center:"15" }}居中

      10)length

      {{ value|length }}返回value的长度,如value=['a','b','c']的话,就显示4

      11)slice

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

      12)first

      {{ value|first }}取第一个元素

      13)last

      {{ value|last }}取最后一个元素

      14)join

      {{ value|join:" // " }}使用字符串拼接列表

      15)truncatechars

      {{ value|truncatechars:9}}如果字符串字符多于指定的字符数量,那么会被截断。

      16)date

      {{ value|date:"Y-m-d H:i:s"}}日期格式化

      17)safe

      {{ value|safe}}

      value = "<a href='#'>点我</a>"

      通过过滤器‘safe|safe’的方式告诉django这段代码是安全的不必转义

    自定义filter

      自定义过滤器只是带有一个或两个参数的python函数

      变量(输入)的值不一定是一个字符串

      参数的值——可以有一个默认值,或完全省略

      自定义filter代码文件摆放位置:  

    app01/
        __init__.py
        models.py
        templatetags/  # 在app01下面新建一个package package
            __init__.py
            app01_filters.py  # 建一个存放自定义filter的py文件
        views.py

      编写自定义filter 

    from django import template
    register = template.Library()
    
    
    @register.filter
    def fill(value, arg):
        return value.replace(" ", arg)
    
    
    @register.filter(name="addSB")
    def add_sb(value):
        return "{} SB".format(value)

      使用自定义filter

      {# 先导入我们自定义filter那个文件 #}

      {% load app01_filters %}

      {# 使用我们自定义的filter #}

      {{ somevariable|fill:"__" }}

      {{ d.name|addSB }}

    tags

     for  

    <ul>
    {% for user in user_list %}
        <li>{{ user.name }}</li>
    {% endfor %}
    </ul>

      for循环可用的一些参数

      1)forloop.counter  当前循环的索引值(从1开始)

      2)forloop.counter0  当前循环的索引值(从0开始)

      3)forloop.revcounter  当前循环的倒序索引值(到1结束)

      4)forloop.revcounter0  当前循环的倒序索引值(到0结束)

      5)forloop.first  判断当前循环是不是第一次循环(布尔值)

      6)forloop.last  判断当前循环是不是最后一次循环(布尔值)

      7)forloop。parentloop  本层循环的外层循环

      for...empty 

    <ul>
    {% for user in user_list %}
        <li>{{ user.name }}</li>
    {% empty %}
        <li>空空如也</li>
    {% endfor %}
    </ul>

      if,elif和else  

    {% if user_list %}
      用户人数:{{ user_list|length }}
    {% elif black_list %}
      黑名单数:{{ black_list|length }}
    {% else %}
      没有用户
    {% endif %}

      注:if语句支持and、or、==、>、<、!=、<=、>=、in、not in、is、is not判断

      with

      定义一个中间变量  

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

      csrf_token

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

      在页面的form表单里面写上{%csrf_token%}

      注意事项

      1)django的模版语言不支持连续判断,即不支持一下写法: 

    {% if a > b > c %}
    ...
    {% endif %}

      2)django的模版语言中属性的优先级大于方法  

    def xx(request):
        d = {"a": 1, "b": 2, "c": 3, "items": "100"}
        return render(request, "xx.html", {"data": d})

      如上:在使用render方法渲染一个页面的时候,传的字典的有一个key是itens并且还有默认的ditems()方法,此时在模版语言中:

      {{ data.items }} 默认会取到items key的值

        

      

      

  • 相关阅读:
    CentOS7安装mysql
    strusts2的开发包
    CentOS7配置mavne国内镜像
    卸载linux自带的jdk
    Centos7安装nodejs
    redis启动方式
    bash学习笔记——Shell变量
    bash学习笔记——bash是什么
    教育管理系统——android家长客户端
    php入门学习——php与jsp对比
  • 原文地址:https://www.cnblogs.com/wangjian941118/p/9761439.html
Copyright © 2011-2022 走看看