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>

 

posted @ 2018-11-02 18:56  爬呀爬Xjm  阅读(155)  评论(0编辑  收藏  举报