小白学习django第三站-自定义过滤器及标签
要使用自定义过滤器和标签,首先要设置好目录结构
现在项目目录下建立common的python包

再将common加入到setting.py中的INSTALLED_APP列表中

在common创建目录templatetags,再在其中创建自定义过滤器和标签等

在自定义common_extras.py中编写自定义过滤器和标签
from django import template
import datetime register = template.Library() # 固定写法 @register.filter
def my_sort(value):
a = sorted(value)
return a @register.filter('myup')
def my_upper(value):
return value.upper() @register.filter
def my_cut(value, arg):
c = value.replace(arg, '+')
return c # 不带参数
@register.simple_tag
def current_time1():
format_string = "%Y年%m月%d日 %H:%M:%S"
return datetime.datetime.now().strftime(format_string) # 带参数
@register.simple_tag
def current_time2(formate_string):
return datetime.datetime.now().strftime(formate_string) # 带上下文参数的
@register.simple_tag(takes_context=True) # 允许使用上下文
def current_time3(context):
format_string = context.get('format_string')
return datetime.datetime.now().strftime(format_string)
# format_string = context.get('format_string')
# return format_string @register.simple_tag
def add(a, b):
c = a + b
return c @register.simple_tag(takes_context=True)
def sorted1(context):
b = context.get('list')
return sorted(b)
# 包含标签
# 不带参数
@register.inclusion_tag('test_app/show_takes.html')
def show_results1():
li = ['web', 'c++', 'python', 'java', 'php']
return {'choice': li} # 带参数
@register.inclusion_tag('test_app/show_takes.html')
def show_results2(li):
return {'choice': li} # 上下文参数
@register.inclusion_tag('test_app/show_takes.html', takes_context=True)
def show_results3(context):
data = context.get('list')
return {'choice': data}
test HTML中编写
{% load common_extras %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>title</title>
</head>
<body>
<ul style="color: blue">自定义过滤器
<li>将名字大写:{{ name|myup }}</li>
<li>将列表按顺序:{{ list|my_sort }}</li>
<li>替换字母{{ name }}:{{ name|my_cut:'u' }}</li>
</ul>
<ul style="color:green">简单自定义标签
<li>不带参数输出:{% current_time1 %}</li>
<li>带参数输出:{% current_time2 "%Y年%m月%d日 %H:%M:%S" %}</li>
<li>使用上下文输出:{% current_time3 %}</li>
<li>使用加法:{% add 1 2 %}</li>
<li>使用上下文排序:{% sorted1 %}</li>
</ul>
<ul style="color:red">包含自定义标签
<li>不带参数:{% show_results1 %}</li>
<li>带参数:{% show_results2 '12345' %}</li>
<li>使用上下文:{% show_results3 %}</li>
</ul>
</body>
</html>
test.py 文件中编写
def func(requset):
return render(requset, 'test_app/test1.html',
context={
'name': 'xuning',
'age': 33,
'list': [1, 2, 4, 3, 6, 5],
'format_string': "%Y年%m月%d日 %H:%M:%S",
})
show_take.html 文件中编写(包含标签):多次调用这个方法,只有choice变量这个不同,可以将这部分代码进行封装
{% for i in choice %}
{{ i }}
{% endfor %}
浏览器中显示

小白学习django第三站-自定义过滤器及标签的更多相关文章
- Django之模板层-自定义过滤器以及标签
自定义标签与过滤器 在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag. 在app中创建templatetags模块(模块名只能是t ...
- 小白学习django第四站-关联数据库
使用mysql连接django首先要配置好相关环境 首先在setting.py配置数据库信息(需要现在mysql中创建一个数据库) 在setting.py那个目录的__init__.py文件中写入 之 ...
- 小白学习django第六站-http相关
请求与相应 HttpRequest对象API def home(request): print('path:', request.path) print('mothod:', request.meth ...
- 小白学习django第五站-简易案例
首先在setting.py文件中编写数据库配置内容 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': ' ...
- Django学习——Django settings 源码、模板语法之传值、模板语法之获取值、模板语法之过滤器、模板语法之标签、自定义过滤器、标签、inclusion_tag、模板的导入、模板的继承
Django settings 源码 """ 1.django其实有两个配置文件 一个是暴露给用户可以自定义的配置文件 项目根目录下的settings.py 一个是项目默 ...
- 一、变量.二、过滤器(filter).三、标签(tag).四、条件分支tag.五、迭代器tag.六、自定义过滤器与标签.七、全系统过滤器(了解)
一.变量 ''' 1.视图函数可以通过两种方式将变量传递给模板页面 -- render(request, 'test_page.html', {'变量key1': '变量值1', ..., '变量ke ...
- Django入门--自定义过滤器与标签
---恢复内容开始--- 为了让Django找到自定义的模板过滤器和模板标签,需要进行文件路径配置,配置方式分为APP目录下配置和项目路径下配置两种方式: 1.在APP目录下配置:针对某个应用特定的自 ...
- django自定义过滤器和标签
1.自定义过滤器和标签的流程: 1.在某个app下创建一个名为templatetags(必需,且包名不可变)的包.假设我们在名为app01的app下创建了一个templatetags的包,并在该包下创 ...
- Web框架之Django_04 模板层了解(过滤器、标签、自定义过滤器、标签、inclusion_tag、模板的继承与导入)
摘要: 模版层(模板语法) 模板语法 过滤器 标签 自定义过滤器.标签 inclusion_tag 模板的继承 模板的导入 一.模板语法: 常用语法:{{ }} 变量相关{% %} ...
随机推荐
- jenkins集成python的单元测试
最近在研究jenkins的集成,然后想把自己写的python工具也用jenkins集成一下 废话少说,来看结构 sparking.py ''' @author: lianying ''' class ...
- python3.6+Xadmin2.0系列(一) xadmin下载及安装
环境配置:win7+python3.6+Django2.1+xadmin2+PyCharm 一.Xadmin下载及安装: 1.下载: 下载地址:https://github.com/sshwsfc/x ...
- Win10升级后VMWare内的系统连不了网如何解决
一些既想要体验新系统又不愿放弃旧系统的用户,一般都会在电脑中安装VMWare虚拟机.不过,他们偶尔也会遇到这样一个问题,当win10系统自动升级后,VMWare虚拟机内的系统就会出现无法连接网络的情况 ...
- 大哥带的XSS练习
0x01反射型 <script>alert("zhong")</script> 可以看见什么都没有过滤 0x02存储型XSS http://www.xss_ ...
- 分布式-信息方式-ActiveMQ的Message dispatch高级特性之(指针) Message cursors
Message dispatch高级特性之 Message cursors概述 ActiveMQ发送持久消息的典型处现方式是:当消息的消费者准备就绪时,消息发送系统把存储的 消息 ...
- conda查看某个安装包的依赖项
查看某个安装包XXX的依赖项的conda指令为: conda search XXX -info 比如XXX为pytorch0.3.1,就会有如下输出: pytorch 0.3.1 py36hfbe70 ...
- JavaBean,EJB,POJO,Spring Bean 的演进历程
JavaBean Sun公司对类提出的规范:1,类是public的2,有一个无参构造方法3,属性修饰要用private,通过get set操作4,实现Serializable接口5,对事件使用Swin ...
- idea 更新后和新的直接安装前,都需要配置 idea64.exe.vmoptions 后再使用
配置合适的参数提升性能,默认的性能不高
- DB2日常管理
执行时间最长的10条SQL语句(按时间降序排列),可保存为脚本方便调用:db2 "SELECT rows_read / (num_executions + 1) as avg_rows_re ...
- leetcode 198. House Robber 、 213. House Robber II 、337. House Robber III 、256. Paint House(lintcode 515) 、265. Paint House II(lintcode 516) 、276. Paint Fence(lintcode 514)
House Robber:不能相邻,求能获得的最大值 House Robber II:不能相邻且第一个和最后一个不能同时取,求能获得的最大值 House Robber III:二叉树下的不能相邻,求能 ...