• Python大神


    寄语:

    模板语言:模版的创建过程,对于模版,其实就是读取模版(其中嵌套着模版标签),然后将 Model 中获取的数据插入到模版中,最后将信息返回给用户。

    模板(template)中也有自己的语言,该语言可以实现数据展示

    一、继承(include,extend)

    a.完全一致   

      {% include xxx.html %}

    b.继承模板,设计自己特立的部分({% block block_name %}{% endblock %})

      母版:{% block title %}{% endblock %}

      子版:{% extend xxx.html%}
            {% block block_name %}{% endblock %}

    二、数据获取

      获取单个:{{ item }}
    
      循环:{% for item in item_list %}  <a>{{ item }}</a>  {% endfor %}
         forloop.counter  # 计算器,从1开始,forloop.counter

         forloop.first # 第一次循环      forloop.last   # 最后一次循环

    三、判断

            {% if ordered_warranty %}  {% else %} {% endif %}
            {% if not ordered_warranty %} {% else %} {% endif %}
            
            {% if sort == 'courses' or sort == 'org' or sort == 'teacher' % } {% else %} {% endif %}
            {% if sort == 'courses' and sort == 'org' % } {% else %} {% endif %}
            注:or与and不可放进同一逻辑里
            
            {% if sort == 'courses' % } {% else %} {% endif %}
            {% ifequal sort 'courses' %}active{% endifequal %} 

    四、模板语言里提供的方法

     1   2)stringformat(数据类型的转换) 4       # 数据类型的转换
     5       {% ifequal city.id|stringformat:'i' city_id %}active2{% endifequal %} 
     6             
     7     3)分割(路径分割)--slice
     8         {% if request.path|slice:'7'  == '/course' %}{% endif %}
     9         
    10     4)显示有choice字段的命名(get_degree_display)
    11         {{ request.user.get_degree_display }}
    12         
    13     5)divisibleby标签的意义是用后面的参数去除,除尽为True,否则为False。
    14         {% if forloop.counter|divisibleby:2 %}
    15         
    16     6)代码表示:5/1 *100,返回500,widthratio需要三个参数,它会使用 参数1/参数2*参数3,所以要进行乘法的话,就将参数2=1即可 Django模版除法
    17         {%  widthratio 5 1 100 %}
    18         
    19     7)定制日期显示模式
    20         {{ item.event_start|date:"Y-m-d H:i:s"}}
    21         
    22     823         {{ bio|truncatewords:"30" }}
    24         
    25     9)首字母大写
    26         {{ my_list|first|upper }} 
    27         
    28     10)变小写
    29         {{ name|lower }}

        11)放置CSRF攻击
          {% csrf_token %} # form表单使用
          xhr.setRequestHeader("X-CSRFToken", "{{ csrf_token }}"); # 用POST提交必须请求头带csrf_token # post 方法下使用

    五、自定义simple_tag

    a、在app中创建templatetags模块
    
    b、创建任意 .py 文件,如:xx.py
        #!/usr/bin/env python
        #coding:utf-8
        from django import template
        from django.utils.safestring import mark_safe
           
        register = template.Library()
           
        @register.simple_tag
        def my_simple_time(v1,v2,v3):
            return  v1 + v2 + v3
           
        @register.simple_tag
        def my_input(id,arg):
            result = "<input type='text' id='%s' class='%s' />" %(id,arg,)
            return mark_safe(result)
        
    c、在使用自定义simple_tag的html文件中导入之前创建的 xx.py 文件名
        {% load xx %}
    
    d、使用simple_tag
        {% my_simple_time 1 2 3%}
        {% my_input 'id_username' 'hide'%}
    
    e、在settings中配置当前app,不然django无法找到自定义的simple_tag  
        INSTALLED_APPS = (
            'django.contrib.admin',
            'django.contrib.auth',
            'django.contrib.contenttypes',
            'django.contrib.sessions',
            'django.contrib.messages',
            'django.contrib.staticfiles',
            'app01',
        )
    自定义方法--步骤
  • 相关阅读:
    Percona Toolkit安装、使用
    Mysql 5.6主从搭建
    AngularJs 抓狂系列索引
    AngularJs 抓狂之: $q promise 自动unwarp功能被禁用了
    AngularJs 的 好文章
    AngularJs 抓狂之:Angular的元素是驼峰命名法,但是HTML属性是用-分隔的,两者不一致!
    Ajax请求永远是304的解决方案
    Java 7 Pocket Guide 读书笔记
    MFC中获取App,MainFrame,Doc和View类等指针的方法
    Thrift实践:(一)安装 -- 未完待续
  • 原文地址:https://www.cnblogs.com/langzibin/p/7693873.html
Copyright © 2020-2023  润新知