• 标签和过滤器


    模板语法之变量:

      -- 变量:相当于print打印了该变量

      -深度查询-----》统一都用句点符

    {模板语言注释:前端看不到}
    {相当于print了该变量}
    <h1>模板语言之变量</h1>
    <p>字符串:{{ name }}</p>
    <p>数字:{{ age }}</p>
    <p>列表:{{ ll }}</p>
    <p>元祖:{{ tu }}</p>
    <p>字典:{{ dic }}</p>
    {只写函数名:相当于函数名(),执行该函数}
    <p>函数:{{ test }}</p>
    {对象内存地址}
    <p>对象:{{ lqz }}</p>
    <p>列表套对象:{{ person_list }}</p>
    <p>字典套对象:{{ person_dic }}</p>
    <hr>
    <h1>深度查询</h1>
    <p>列表第0个值:{{ ll.0 }}</p>
    <p>列表第3个值:{{ ll.3 }}</p>
    <p>字典取值:{{ dic.name }}</p>
    <p>字典取列表值:{{ dic.ll }}</p>
    {再继续取值,继续点}
    <p>对象取数据属性:{{ lqz.name }}</p>
    <p>对象取绑定给对象的函数属性:{{ lqz.get_name }}</p>
    <p>对象取绑定给类的函数属性:{{ lqz.cls_test }}</p>
    <p>对象取静态方法:{{ lqz.static_test }}</p>
    <p>把对象列表中egon年龄取出来:{{ person_list.1.age }}</p>
    {拓展:不能调有参数的方法}
    <p>字符串的方法:{{ name.upper }}</p>

    模板之过滤器
      --语法:{{第一个参数/过滤器的名字:第二个参数}}

      --常用过滤器:

       -length

       -default

        -slice

      -data

      -filesizeformat

      -truncatechars

      -truncatewords

      -safe

      -add

     

    <h1>模板语言之过滤器</h1>
    {后面就是个python中的函数,|前面的,是函数的第一个参数,冒号后面的是第二个参数}
    <p>统计字符串长度:{{ name|length }}</p>
    <p>统计列表长度:{{ ll|length }}</p>
    <p>过滤器之默认值:{{ ll2|default:'没有值' }}</p>
    <p>
        过滤器之filesizeformat--1:{{ 2013344444444444444444444445555444444444444444444444444444444444444444444444444444444444443|filesizeformat }}</p>
    <p>过滤器之filesizeformat--2:{{ file_size|filesizeformat }}</p>
    <p>过滤器之不使用date:{{ ctim }}</p>
    <p>过滤器之date:{{ ctim|date:'Y-m-d' }}</p>
    {前闭后开区间}
    <p>过滤器之slice:{{ ll|slice:'2:-1' }}</p>
    {支持步长}
    <p>过滤器之slice-字符串:{{ name|slice:'0:3:3' }}</p>
    {三个起步}
    <p>过滤器之truncatechars:{{ 'dafddfafgadfgaasdgadgfadaf'|truncatechars:5 }}</p>
    <p>过滤器之truncatewords:{{ '我 dfaf ga dfgaas 你 dgf adaf'|truncatewords:5 }}</p>
    <p>过滤器之不用safe:{{ h1 }}</p>
    <p>过滤器之用safe:{{ h1|safe }}</p>
    
    <p>过滤器之不用safe:{{ script }}</p>
    {<p>过滤器之用safe:{{ script|safe }}</p>}
    <p>过滤器之用add:{{ 12|add:'1' }}</p>  { 数字增加}
    <p>过滤器之用add:{{ 'egon'|add:'dsb' }}</p>
    View Code
        class Person():
            def __init__(self, name, age):
                self.name = name
                self.age = age
            def get_name(self):
                return self.name
            @classmethod
            def cls_test(cls):
                return 'cls'
            @staticmethod
            def static_test():
                return 'static'
             模板里不支持带参数
            def get_name_cs(self,ttt):
                return self.name
        lqz=Person('lqz',18)
        egon=Person('egon',18)
        person_list=[lqz,egon]
        person_dic={'lqz':lqz}
    
        file_size=1024
        import datetime
        ctim=datetime.datetime.now()
    View Code


    模板之标签

    -{% 标签 %} 
    -for:forloop:对象(里面有好多东西:parentloop,last,first,counter....)
    empty:被循环的对象是空,才走它
    for循环可以嵌套,也可以用if
    -if:
    {% if forloop.first %}
      <p>第一次的我 </p>
    {% elif forloop.last %}
      <p>最后的我 </p>
    {% else %}
      <p>{{ foo }}</p>吧
    {% endif %} -with:重命名,应用在变量名过长
    ********都要有结束********
    <h1>模板语言之标签</h1>
    {{% for foo in ll %}}
    {    {{ forloop }}}
    {<p>{{ forloop.first }}--->{{ forloop.counter0 }}--->{{ forloop.revcounter }}----->{{ foo }}</p>}
    {{% endfor %}}
    
    {{% for foo in ll %}}
    {    {% for i in person_list %}}
    {  取出外层是第几次循环}
    {        {{ forloop.parentloop.counter }}}
    {        <p>{{ forloop.first }}--->{{ forloop.counter0 }}--->{{ forloop.revcounter }}----->{{ foo }}</p>}
    {    {% endfor %}}
    {{% endfor %}}
    {**************循环的对象是空,才会走到empty,而不是对象里面的东西为空}
    {{% for foo in dic2 %}}
    {    <p>{{ foo }}</p>}
    {    {% empty %}}
    {    傻逼了}
    {{% endfor %}}
    {只循环字典的话,取到的是key值}
    {{% for foo in dic %}}
    {取到value的值}
    {{% for foo in dic.values %}}
    {取到key 和 value的值}
    {{% for k,foo in dic.items %}}
    {    <p>{{ k }}----->{{ foo }}</p>}
    {    {% empty %}}
    {    傻逼了}
    {{% endfor %}}
    
    {{% if user %}}
    {    <a href="">退出</a>}
    {    {% else %}}
    {    <a href="">登录</a>}
    {    <a href="">注册</a>}
    {{% endif %}}
    
    {for循环判断如果是第一次,打印第一次,其他打印正常值}
    {% for foo in ll %}
        {% if forloop.first %}
            <p>第一次的我 </p>
        {% elif forloop.last %}
            <p>最后的我 </p>
        {% else %}
            <p>{{ foo }}</p>
        {% endif %}
    {% endfor %}
    
    <hr>
    {with 相当于取别名,作用:变量太长,可以简化}
    {{% with name as ttt %}}
    {    {{ ttt }}}
    {    {{ name }}}
    {    {{ user }}}
    {}
    {{% endwith %}}
    ------
    {% with dic.ll.2 as ttt %}
        {{ ttt }}
    
        {{ ttt }}
    
    {% endwith %}


    自定义标签和过滤器

    标签不能用在if判断,过滤器,可以用在if判断 
    -自定义过滤器
      -1 先app是不是已经在setting中注册
      -2 在app下创建一个templatetags(****名字不能变***)的文件夹(模块)
      -3 在模块下创建一个py文件,名字随意:mytag.py
      -4 # 第一步,导入template
      from django.template import Library
      # 第二步,定义一个叫register的变量=template.Library() r
      egister = Library()
      -5 写一个函数,用@register.filter(name='yyy')装饰一下(可以指定别名)
      def str_add(str1, str2): #一定要有返回值
      # 业务逻辑很复杂
        return str1 + str2
    -6 在模板里:(新定定义的标签,过滤器,都要重启程序)
    -{% load mytag %}
    -{{'lqz'|str_add:'nb'}}
    -自定义标签:
    -1-4:前4步,根过滤器的定义完全一样
    -5 只是装饰器不一样
    @register.simple_tag()
    def add_nb(value):
    return value+'nb'
    -6 在模板里:(多个参数,以空格区分)
    -{% load mytag %}
    -{% add_nb 'lqz'%}

     

  • 相关阅读:
    [Qt] 文本文件读写, 摘自官方文档
    [Windows] Socket Server Failed to bind, error 10048
    lodctr /R 失败的情况
    ModuleNotFoundError: No module named 'sklearn.cross_validation'
    [Qt] 通过socket将另一个程序的某个窗口调到最前端
    SortedDictionary<TKey, TValue> 类 表示根据键进行排序的键/值对的集合。
    finally不管有没有错都会运行 finally 块用于清除 try 块中分配的任何资源,以及运行任何即使在发生异常时也必须执行的代码
    HttpWebRequest使用证书请求
    string StartsWith 方法 Https
    设置https验证方式
  • 原文地址:https://www.cnblogs.com/zhouhao123/p/9936744.html
Copyright © 2020-2023  润新知