慕课网-Django入门到进阶-更适合Python小白的系统课程-第3章Django中的Template模板-3.5内置过滤器

第3章 Django中的Template模板

3.5 内置过滤器

1.进入项目下目录 app,修改文件 views.py

#coding:utf-8
import datetime

from django.shortcuts import render
from django.views.generic import View

class Index(View):
    TEMPLATE = 'index.html'

    def get(self, request, name):

        data = {}
        data['name'] = name
        data['array'] = range(10)
        data['count'] = 20
        data['time'] = datetime.datetime.now()
        data['cut_str'] = 'hello-boy!'
        data['first_big'] = 'hello django!'
        data['result'] = []
        data['result_none'] = None
        data['dic_list'] = [{'name':'dewei','age':30}, {'name':'xiaoming', 'age':18}]
        data['float_num'] = 3.1415926
        data['html_str'] = '<div style="background-color:red;width:50px;height:50px"></div>'
        data['a_str'] = '请看 www.baidu.com'
        data['feature'] = data['time'] + datetime.timedelta(days=5)
        return render(request, self.TEMPLATE, data)

2.进入项目下目录 templates,修改文件 index.html

{% extends 'base.html' %}
{% load static %}
{% block css_style %}
<link rel="stylesheet" href="{% static 'index.css' %}" />
{% endblock %}
{% block title %}
test
{% endblock %}
{% block content %}
<h1> hello {{name}} </h1>
<ul>
    {% for item in array %}
        <li>{{item}}</li>
    {% endfor %}
</ul>
<br/>

<label>add:</label>{{count|add:10}}<br/>
<label>date:</label>{{time|date:"Y-m-d H:i:m"}}<br/>
<label>cut:</label>{{cut_str|cut:"-"}}<br/>
<label>capfirst:</label>{{first_big|capfirst}}<br/>
<label>default:</label>{{result|default:"空列表"}}<br/>
<label>default_if_none:</label>{{result_none|default_if_none:"none才是空"}}<br/>
<label>dictsort:</label>{{dic_list|dictsort:'age'}}<br/>
<label>dictsortreversed:</label>{{dic_list|dictsortreversed:'age'}}<br/>
<label>first:</label>{{dic_list|first}}<br/>
<label>last:</label>{{dic_list|last}}<br/>
<label>floatformat:</label>{{float_num|floatformat:4}}<br/>
<label>join:</label>{{array|join:"-"}}<br/>
<label>length:</label>{{dic_list|length}}<br/>
<label>divisibleby:</label>{{count|divisibleby:2}}<br/>
<label>length_is:</label>{{dic_list|length_is:3}}<br/>
<label>safe:</label>{{html_str|safe}}
<label>random:</label>{{dic_list|random}}<br/>
<label>slice:</label>{{html_str|slice:":10"}}<br/>
<label>slugify:</label>{{html_str|slugify}}<br/>
<label>upper:</label>{{html_str|upper}}<br/>
<label>urlize:</label>{{a_str|urlize}}<br/>
<label>wordcount:</label>{{first_big|wordcount}}<br/>
<label>timeuntil:</label>{{feature|timeuntil}}<br/>
<br/><br/>
{% endblock %}

3.测试

4.进入项目下目录 app,新建目录 templatetags,自定义过滤器

5.进入项目下目录 app/templatetags,新建文件 __init__.py 和 myfilter.py,自定义过滤器

6.进入项目下目录 app/templatetags,修改文件 myfilter.py

#!/usr/bin/env python
# -*- coding:utf-8 -*-
from django import template
 
register = template.Library()
 
@register.filter
def test(value, args):
    return value * args

7.进入项目下目录 templates,修改文件 index.html

{% extends 'base.html' %}
{% load static %}
{% load myfilter %}
{% block css_style %}
<link rel="stylesheet" href="{% static 'index.css' %}" />
{% endblock %}
{% block title %}
test
{% endblock %}
{% block content %}
<h1> hello {{name}} </h1>
<ul>
    {% for item in array %}
        <li>{{item}}</li>
    {% endfor %}
</ul>
<br/>

<label>add:</label>{{count|add:10}}<br/>
<label>date:</label>{{time|date:"Y-m-d H:i:m"}}<br/>
<label>cut:</label>{{cut_str|cut:"-"}}<br/>
<label>capfirst:</label>{{first_big|capfirst}}<br/>
<label>default:</label>{{result|default:"空列表"}}<br/>
<label>default_if_none:</label>{{result_none|default_if_none:"none才是空"}}<br/>
<label>dictsort:</label>{{dic_list|dictsort:'age'}}<br/>
<label>dictsortreversed:</label>{{dic_list|dictsortreversed:'age'}}<br/>
<label>first:</label>{{dic_list|first}}<br/>
<label>last:</label>{{dic_list|last}}<br/>
<label>floatformat:</label>{{float_num|floatformat:4}}<br/>
<label>join:</label>{{array|join:"-"}}<br/>
<label>length:</label>{{dic_list|length}}<br/>
<label>divisibleby:</label>{{count|divisibleby:2}}<br/>
<label>length_is:</label>{{dic_list|length_is:3}}<br/>
<label>safe:</label>{{html_str|safe}}
<label>random:</label>{{dic_list|random}}<br/>
<label>slice:</label>{{html_str|slice:":10"}}<br/>
<label>slugify:</label>{{html_str|slugify}}<br/>
<label>upper:</label>{{html_str|upper}}<br/>
<label>urlize:</label>{{a_str|urlize}}<br/>
<label>wordcount:</label>{{first_big|wordcount}}<br/>
<label>timeuntil:</label>{{feature|timeuntil}}<br/>
<label>custom:</label>{{count|test:10}}<br/>
<br/><br/>
{% endblock %}

7.修改后重启服务

8.测试

posted on 2020-01-19 11:50  herisson_pan  阅读(5)  评论(0)    收藏  举报

导航