zoukankan      html  css  js  c++  java
  • django 模板渲染

    views.py文件

    def home(request):
        name = 'adrian'
        age = 18
        lst = ['喝酒','抽烟','烫头','做大保健']
        dic = {
              'key1':1,'key2':2,'key3':3
        }
        class Person:
            def p(self):
                return 'adrian'
        return render(request,'home.html',{'name':name,'age':age,'lst':lst,'dic':dic,'obj':Person()})
    

    html文件

    万能的点
    <h1>{{ name }}</h1>    
    <h1>{{ age }}</h1>
    <h1>{{ dic.keys }}</h1>   
    <h1>{{ lst.1 }}</h1>   列表直接用 . 加索引值就行,不用加中括号
    <h1>{{ obj.p }}</h1>
    
    
    1. 过滤器

      在django模板语言中,通过使用过滤器来改变变量的显示

      1. 过滤器支持“链式”操作。即一个过滤器的输出作为另一个过滤器的输入。
      2. 过滤器可以接受参数,例如:{{ sss|truncatewords:30 }},这将显示sss的前30个词。
      3. 过滤器参数包含空格的话,必须用引号包裹起来。比如使用逗号和空格去连接一个列表中的元素,如:{{ list|join:', ' }}
      4. '|'左右没有空格

      length --- 用于返回值的长度 一般作用于字符串和列表等

      str = 'I love you '
      
      <h1>{{ lst|length }}</h1>
      

      default ---- 设置默认值

      <h1>{{ name1|default:'啥也没给' }}</h1>   当name1没有值或者没有定义的时候就会将默认值返回给html页面,如果name1有值就不会显示默认值
      

      filesizeformat ---- 将值格式化为一个 “人类可读的” 文件尺寸 (例如 '13 KB', '4.1 MB', '102 bytes', 等等)。例如

      file_size = 156165421
      
      <h1>{{ file_size|filesizeformat }}</h1>
      
      页面显示的结果:148.9 MB
      

      slice ----- 切片

      <h1>{{ str|slice:'0:6' }}</h1>
      

      date ----- 格式化时间的方法

      <h1>{{ date }}</h1>
      <h1>{{ date|date:'Y-m-d H-i-s' }}</h1>  
      
      结果:
      Sept. 25, 2019, 8:30 p.m.
      2019-09-25 20-30-26
      

      safe ---- 告诉html页面这个字符串是安全的,所以页面会将这个字符串进行渲染,就会将这字符串渲染成一个a标签

      a_tag = '<a href="http://www.baidu.com">百度</a>'
      
      <h1>{{ a_tag|safe }}</h1>
      

      truncatechars ------- 如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“...”)结尾。

      str = 'I love you '
      
      <h1>{{ str|truncatechars:6 }}</h1>
      
      结果:
      I l...
      

      truncatewords ----- 在一定数量的字后截断字符串,是截多少个单词。(按照单词来,其它字符都不会生效)

      str = 'I love you '
      
      <h1>{{ str|truncatewords:2 }}</h1>
      
      结果:
      I love ...
      

      cut ------- 移除value中所有的与给出的变量相同的字符串

      str = 'I love you '
      
      <h1>{{ str|cut:' ' }}</h1>
      
      结果:
      Iloveyou
      

      join ----- 连接,用给定的字符对列表中的元素进行连接

      lst = ['喝酒','抽烟','烫头','做大保健']
      
      <h1>{{ lst|join:'+' }}</h1>
      
      结果:
      喝酒+抽烟+烫头+做大保健
      
    2. 标签

      for --- 循环

      lst = ['喝酒','抽烟','烫头','做大保健']
      
      <ul>
          {% for i in lst %}
              <li>{{ i }}</li>
          {% endfor %}
      </ul>
      #结果:
      喝酒
      抽烟
      烫头
      做大保健
      
      
      # 在需要循环的列表后边加上reversed就是反向循环
      <ul>
          {% for i in lst reversed%}
              <li>{{ i }}</li>
          {% endfor %}
      </ul>
      
      #结果:
      做大保健
      烫头
      抽烟
      喝酒
      
      循环字典
       dic = {
                'key1':1,'key2':2,'key3':3
          }
      
      {% for k,v in dic.items %}
          <p>{{ k }}=={{ v }}</p>
      {% endfor %}
      
      结果:
      key1==1
      key2==2
      key3==3
      
      forloop.counter            当前循环的索引值(从1开始),forloop是循环器,通过点来使用功能
      forloop.counter0           当前循环的索引值(从0开始)
      forloop.revcounter         当前循环的倒序索引值(从1开始)
      forloop.revcounter0        当前循环的倒序索引值(从0开始)
      forloop.first              当前循环是不是第一次循环(布尔值)
      forloop.last               当前循环是不是最后一次循环(布尔值)
      forloop.parentloop         本层循环的外层循环的对象,再通过上面的几个属性来显示外层循环的计数等
      

      例如:forloop.counter

      {% for k,v in dic.items %}
          {{ forloop.counter }}
          <p>{{ k }}=={{ v }}</p>
      {% endfor %}
      
      结果:
      1
      key1==1
      2
      key2==2
      3
      key3==3
      

      for .... empty :在执行for循环没有找到可用的数据后会执行empty里边的标签

      <ul>
          {% for i in lst1%}
              <li>{{ i }}</li>
          {% empty %}
              <p>sorry,There is no element</p>
          {% endfor %}
      </ul>
      

      if 标签

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

      age = 18
      
      {% if age == 18 %}
          <p>adrian 18岁了</p>
      {% elif age > 18%}
          <p>adrian 大于18岁</p>
      {% else %}
          <p>adrian 小于18岁</p>
      {% endif %}
      

      with

          使用一个简单地名字缓存一个复杂的变量,多用于给一个复杂的变量起别名,当你需要使用一个“昂贵的”方法(比如访问数据库)很多次的时候是非常有用的

          例如:

          注意等号左右不要加空格。

      {% with total=business.employees.count %}
          {{ total }} <!--只能在with语句体内用-->
      {% endwith %}
      

          或

      {% with business.employees.count as total %}
          {{ total }}
      {% endwith %}
      
  • 相关阅读:
    135. Candy(Array; Greedy)
    69. Sqrt(x) (Divide-and-Conquer)
    109. Convert Sorted List to Binary Search Tree (List; Divide-and-Conquer, dfs)
    108.Convert Sorted Array to Binary Search Tree(Array; Divide-and-Conquer, dfs)
    34. Search for a Range (Array; Divide-and-Conquer)
    35. Search Insert Position (Array; Divide-and-Conquer)
    82. Remove Duplicates from Sorted List II (List)
    python dict list tuple
    python unix时间戳
    字符串哈希函数
  • 原文地址:https://www.cnblogs.com/zhufanyu/p/11665147.html
Copyright © 2011-2022 走看看