PythonWeb开发Django框架学习(六)Tempalte过滤器

来源:互联网 发布:网络红人菁菁淘宝店 编辑:程序博客网 时间:2024/06/05 16:59

上一节说到了Templates的标签,这一次说一下为了更好的展示数据所使用的过滤器,其中Django自带有很多的过滤器,我这里只是举几个例子而已,还有就是可以自己自定义一些过滤器都会讲到,但并不详细,还请自己探索。

我们首先来说一下什么是过滤器,其实就相当于Python中的管道一样,执行管道之后的方法返回新的数据,只不过这不是在Python中执行而是在模板中执行而已

下面就看一个例子吧:

1.还是写一下views.py文件:

from __future__ import unicode_literalsfrom django.http import HttpResponsefrom django.shortcuts import renderfrom django.template import loader,Context,Templatefrom django.shortcuts import render_to_responseimport datetime# Create your views here.class Person(object):def __init__(self,name,age,sex):self.name = nameself.age = ageself.sex = sexdef say(self):return "My name is "+ self.name#可以后台网前台传递数据的三种方式def index(request):    user = {'name': 'zhao', 'age': 23, 'sex': 'male'}    book_list = ['Python', 'Java', 'PHP']    person = Person('jack', 22, 'female')    '''    #这里的注释是说明在没有使用过滤器使得变量后的字母都变成大写应该如何,就是得在Python中编写代码,这显然不是我们想要的简单的方式    book_temp = []    for book in book_list:        book_temp.append(book.upper())    '''    return render_to_response('test.html', {'user': user, 'person': person, 'book': book_list,'today':datetime.datetime.now()})

2.urls.py的配置我就不再重复啦,不会的看之前几篇文章吧

3.重点就是test.html:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>模板过滤器</title></head><body>{% for b in book reversed%}    {# upper 将字符串大写输出,当然你还可以试一下其他的,lower将字符串小写输出  capfirst大写第一个字母输出,当然还可以都通过管道一起使用 #}    <li>{{ b | upper}}</li>{% endfor %}{# 使用过滤器进行日期的格式化处理  #}<h2>普通输出:today is {{ today }}</h2><h2>格式输出:today is {{ today | date:"Y-m-d"}}</h2></body></html>
4.看一下执行效果吧:



5.上面就说到啦我们还可以自己定义过滤器,那应该怎么做呢,首先需要在APP目录下新建一个Python包文件就是新建一个文件夹templatetags,里面在存放一个空的__init__.py文件,

在这个包里面存放的py文件就是我们的过滤器文件啦,例如在其中新建一个percent.py文件,进行编辑:

from django import templateregister = template.Library()@register.filterdef percent(value):    return value+"%"
这个过滤器很简单就是在每个输出后面加上一个%而已

那我们就来试验一下吧,再编辑一下test.html:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>模板过滤器</title></head><body>{% for b in book reversed%}    {# upper 将字符串大写输出,当然你还可以试一下其他的,lower将字符串小写输出  capfirst大写第一个字母输出,当然还可以都通过管道一起使用 #}    <li>{{ b | upper}}</li>{% endfor %}<h2>普通输出:today is {{ today }}</h2><h2>格式输出:today is {{ today | date:"Y-m-d"}}</h2><hr><h3>使用自定义过滤器</h3>{% load percent %}{# 使用自定义的过滤器需要先使用load加载进来 #}<h2>格式输出:today is {{ today | date:"Y-m-d" |percent}}</h2></body></html>
ok,我们就来测试一下吧:




这里就把过滤器说完了,具体的其他过滤器自己探究吧



阅读全文
0 0
原创粉丝点击