zoukankan      html  css  js  c++  java
  • 008---Django的模版层

    python的模板:HTML代码+模板语法

    <!--模版语法之变量-->
    <h1>Index </h1>
    <p>{{ name }}</p>
    <p>{{ num }}</p>
    <p>{{ list1 }}</p>
    <p>{{ info }}</p>
    <p>{{ b }}</p>
    <p>{{ alex }}</p>
    <p>{{ egon }}</p>
    <p>{{ p_list }}</p>
    <p>{{ money }}</p>
    <p>{{ flag }}</p>
    <p>{{ null_list }}</p>
    <hr>
    <!--模版语法之深度查询  .字符-->
    <p>列表:{{ list1.1 }}</p>
    <p>字典:{{ info.name }} {{ info.age }}</p>
    
    <p>对象:{{ alex.name }} {{ alex.age }}</p>
    <p>{{ p_list.1.name }} {{ p_list.1.age }}</p>
     1     <!--模版语法之过滤器-->
     2     <p>时间:{{ t|date:"Y-m-d H:i:s" }}</p>
        <!--全局 settings.py DATETIME_FORMAT = 'Y-m-d H:i:s' USE_L10N = True -->
    3   <!--如果一个变量是false或者为空,使用给定的默认值。否则,使用变量的值。例如:--> 4 <p>None值:{{ money|default:'数据为空' }}</p> 5 <p>False:{{ flag|default:'关闭' }}</p> 6 <p>空列表:{{ null_list|default:'' }}</p>
    7 <p>文件大小:{{ file_size|filesizeformat }}</p> 8 9 <p>截取字节数:{{ text|truncatechars:16 }}</p> 10 <p>截取字符数:{{ text|truncatewords:2 }}</p> 11 12 <p>链接:{{ link }}</p> 13 <h1>转义:{{ link|safe }}</h1> # 防止xss攻击, 14 15 <p>加法:{{ list1.1|add:111 }}</p>
     1 标签看起来像是这样的: {% tag %}。标签比变量更加复杂:一些在输出中创建文本,一些通过循环或逻辑来控制流程,一些加载其后的变量将使用到的额外信息到模版中。一些标签需要开始和结束标签 (例如{% tag %} ...标签 内容 ... {% endtag %})。
     2 
     3 
     4     <!--模版语法之标签-->
     5     <h1>for 标签</h1>
     6 
     7     {% for i in list1 %}
     8         <p>{{ i }}</p>
     9     {% endfor %}
    10     <hr>
    11 
    12     {% for key in info %}
    13         <p>{{ key }}</p>
    14     {% endfor %}
    15     <hr>
    16 
    17     {% for person in p_list %}
    18         <p>{{ forloop.counter1 }} {{ person.name }} {{ person.age }}</p>
    19     {% endfor %}
    20     <hr>
    21 
    22     {% for null in null_list %}
    23     {% empty %}
    24         <p>无内容</p>
    25     {% endfor %}
    26 
    27     <hr>
    28     <h1>if 标签</h1>
    29     {% if money %}
    30         <p>土豪,我们做朋友吧</p>
    31     {% else %}
    32         <p>穷光蛋</p>
    33     {% endif %}
    34 
    35     <hr>
    36 
    37     <h1>with 标签</h1>
    38 
    39     {% with p_list.1.name as n %}
    40         {{ n }}
    41     {% endwith %}
    42 
    43     <hr>
    44     <h1>csrf 标签</h1>
    45     {% csrf_token %}

    自定义标签和过滤器

    1、在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag.

    2、在app中创建templatetags模块(模块名只能是templatetags)

    3、创建任意 .py 文件,如:my_tag_filter.py

     1 #! /usr/bin/env python
     2 # -*- coding: utf-8 -*-
     3 # __author__ = "ziya"
     4 # Date: 2018-10-22
     5 
     6 from django import template
     7 
     8 # 固定
     9 register = template.Library()
    10 
    11 # 自定义过滤器  只能两个参数  但是可以作为if 的变量
    12 @register.filter
    13 def multi_fliter(x,y):
    14 
    15     return x*y
    16 
    17 # 自定义标签  可以传多个参数  不可以作为if 的变量
    18 @register.simple_tag
    19 def multi_tag(x,y):
    20     return x*y

    4、在使用自定义simple_tag和filter的html文件中导入之前创建的 my_tag_filter.py

    1 {% load my_tag_filter %}  # 写在最顶端
    2 
    3     <hr>
    4     <h1>自定义过滤器</h1>
    5     <p>{{ num|multi_fliter:20 }}</p>
    6 
    7     <p>自定义标签</p>
    8     <p>{% multi_tag 10 10 %}/p>
  • 相关阅读:
    【回顾整理】HTML+CSS个的两个实战项目
    【转】tkinter实现的文本编辑器
    迟到的tkinter---学校选课刷屏器
    调用有道翻译API
    【leetCode】3Sum Closest
    【LeedCode】3Sum
    【LeedCode】String to integer(atoi)
    【LeetCode】Reverse digits of an integer
    前端工程师必备PS技能
    【LeetCode】Add Two Numbers
  • 原文地址:https://www.cnblogs.com/xjmlove/p/9897912.html
Copyright © 2011-2022 走看看