zoukankan      html  css  js  c++  java
  • 【Django】:模板语言

    排序

    1、forloop.counter 表示循环的次数,它从1开始计数,第一次循环设为1

    {% for item in todo_list %}  
        <p>{{ forloop.counter }}: {{ item }}</p> 
    {% endfor %}
    

    2、forloop.counter0 表示循环的次数,它从0开始计数,第一次循环设为0

    {% for item in todo_list %}  
        <p>{{ forloop.counter0 }}: {{ item }}</p> 
    {% endfor %} 
    

    3、forloop.revcounter  示循环中剩下的items数量,第一次循环时设为items总数,最后一次设为1

    {% for item in todo_list %}  
        <p>{{ forloop.revcounter }}: {{ item }}</p> 
    {% endfor %}
    

    4、forloop.revcounter0 类似于forloop.revcounter,但它是表示的数量少一个,即最后一次循环时设为0

    {% for item in todo_list %}  
        <p>{{ forloop.revcounter0 }}: {{ item }}</p> 
    {% endfor %}
    

    5、forloop.first 当第一次循环时值为True,在特别情况下很有用)

    {% for object in objects %}  
         {% if forloop.first %}<li class="first">{% else %}<li>{% endif %}  
         {{ object }}  
        </li> 
    {% endfor %}
    

    6、forloop.last 当最后一次循环时值为True 

    {% for link in links %}{{ link }}{% if not forloop.last %} | {% endif %}{% endfor %}
    

    7、forloop.parentloop 在嵌套循环中表示父循环的forloop:

    {% for country in countries %}  
        <table> 
         {% for city in country.city_list %}  
            <tr> 
                <td>Country #{{ forloop.parentloop.counter }} </td> 
                <td>City #{{ forloop.counter }}</td> 
                <td>{{ city }}</td> 
            </tr> 
         {% endfor %}  
        </table> 
    {% endfor %} 
    

    继承 

    1、模板继承允许你建立一个基本的”骨架”模板, 它包含你所有最常用的站点元素 并 定义了一些可以被子模板覆盖的block

    父模板(master.html):

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>{% block title %}{% endblock %}</title>
        <style>
            .body-header{
                background-color: black;
            }
        </style>
    </head>
    <body>
    

    HTML页面:

    {# 指定继承的模板 #}
    {% extends 'master.html' %}
    
    {# 指定替换的位置 #}
    {% block title %}
        tp1
    {% endblock %}
    
    {# 指定替换的位置 #}
     {% block content %}
        <p>tp1</p>
     {% endblock %}
    

    注:一个html页面只能继承一个父模板,不能继承多个

    2、模板导入定制的组件include

    组件(tag.html):

    form>
        <input type="text" name="user"/>
        <input type="submit" value="提交"/>
    </form>
    

    HTML页面:

    {# 指定继承的模板 #}
    {% extends 'master.html' %}
    
    {# 指定替换的位置 #}
    {% block title %}
        tp1
    {% endblock %}
    
    {# 指定替换的位置 #}
    {% block content %}
        <p>tp1</p>
    
        {# 导入单独组件 #}
        {% include 'tag.html' %}
    {% endblock %}
    

      

    Simplelistfilter

    有时候我们需要在html上对后台渲染的页面进行二次处理,比如把字符串的首字母大写、字符进行计算操作等

    1、django默认自带方法

    {{ item.event_start|date:"Y-m-d H:i:s"}}    #日期格式进行转换
    {{ bio|truncatewords:"30" }}                  #取字符串前30位
    {{ my_list|first|upper }}                     #第一个字符大写              
    {{ name|lower }}                                #所有字符小写
    

    2、自定义simple_tag、filter

     在app中创建templatetags文件夹

     templatetags中创建任意 .py 文件,如:handle.py

    from django import template
    from django.utils.safestring import mark_safe
    
    register = template.Library()
    
    @register.simple_tag()
    def sub(a1,a2):    #能添加多个参数
    
        return a1 + a2
    
    @register.filter()  
    def lzl(a1,a2):    #只能传入两个参数
    
        return a1 + a2
    

    ③ 在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',
        'cmdb',
    )
    

    导入和使用simple_tag、filter

    {# 导入py文件名 #}
    {% load handle %}
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
            <div>{{ name|lower }}</div>
            <div>{{ name|upper }}</div>
    
            {% sub 1 2 %}
    
            {{ 'hello'|lzl:'world'}}
    </body>
    </html>
    
    {#页面内容#}
    {#3 helloworld#}
    

      

    3、django数据库choice获取字段

    device_status_choices = (
            (1, '上架'),
            (2, '在线'),
            (3, '离线'),
            (4, '下架'),
        )
        device_type_id = models.IntegerField('设备类型',choices=device_type_choices, default=1)
    
     <td colspan="4">{{ response.data.asset.get_device_status_id_display }}</td>
    

      

    详细-》》http://www.cnblogs.com/mfryf/archive/2012/07/17/2595019.html

    《第二十章》

  • 相关阅读:
    8. String to Integer (atoi)
    PHP Warning: strftime(): It is not safe to rely on the system's timezone set
    Jackson 使用
    用vim去掉utf-8 BOM
    oracle 11g 从 dmp 文件中导出 sql 代码 的方法.
    git gitosis 添加项目
    Linux gcc和gdb程序调试用法 {转}
    Dos中转义符
    HTML样式链接到外部样式表
    转:财富与智慧
  • 原文地址:https://www.cnblogs.com/lianzhilei/p/6268138.html
Copyright © 2011-2022 走看看