MVC之 自定义过滤器(Filter) 一.自定义Filter 自定义Filter需要继承ActionFilterAttribute抽象类,重写其中需要的方法,来看下ActionFilterAttribute类的方法签名. //表示所有操作-筛选器特性的基类. [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)] public abst…
简述:django 在views中有数据需要通过字典(dict)的方式传递给template,该字典中又包含了字典,而且字典中的键值还是一个对象,在template中处理传递过来的数据的时候,字典不能通过键值的方式取出原有数据,对象不能通过(.)的方式直接取出数据,通过大量地查阅资料,最终通过过滤器(filter)的方式解决! 1.需要传递到template的数据,在 views.py 中的index函数中 latest_article_list 是一个Article对象的列表,包含文章ID.作…
自定义template过滤器的方法参考文档,不再赘述 is_safe 文档说明过滤的两种最终形态,其中一种是设置register.filter(is_safe=True),但是对is_safe的具体作用说的云山雾绕的,而查了些博文只是简单的说is_safe可以关闭掉自动转义(这个说法是错误的!) 我尝试了加或者不加is_safe的效果 @register.filter def demo(value): return '<br>' + value @register.filter(is_safe…
一.自定义过滤器 1.自定义过滤器文件存放位置 在APP应用下创建名为templatetags(该文件夹名固定)的文件包(包含__init__.py文件) 注意APP必须在setting中注册 即在setting文件中的INSTALLED_APPS列表中添加‘teacher’这个元素 不添加的话会影响后面自定义过滤器的注册 在templatetags文件夹下创建teacher_filter.py文件 2.自定义过滤器本质是一个自定义的函数 只能接受一个或两个参数 在teacher_filter文…
设定自定义过滤器之前要现在配置文件内把自己项目名在 INSTALLED_APPS 内导入 #已安装的django应用 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', #将自己的应用,填充…
前提:自定义模板标签和过滤器必须位于Django的某个应用中,这个应用可以包含一个templatetags目录, 和models.py views.py 处于同一级目录.若这个templatetags目录不存在则创建他,同时在该目录下建立一个py文件:__init__.py 文件,使得该目录可以作为Python包.在添加这个模块后,需要重启服务器以便使用.注意命名不要冲突.eg: polls/ __init__.py models.py templatetags/ 在模板中可以这样用:{% lo…
代码布局(自定义的代码,放在哪里) 二种方式:1. 某个app特有的 -app 目录下,templatetags 文件夹     ** 必需是这个名称的包(目录中有__init__.py文件) -再到 templatetags 文件夹下创建python模块(py文件)2. 定义复用 -创建一个新的app,将他们定义在新的app中,在INSTALL_APPS 注册,然后就可以应用 -在 templatetags 文件夹下新建  tags.py   #文件名自己取 以下为文件内容: # 自定义模板标…
创建一个模板库 不管是写自定义标签还是过滤器,第一件要做的事是创建模板库(Django能够导入的基本结构). 创建一个模板库分两步走: 第一,决定模板库应该放在哪个Django应用下. 如果你通过 manage.py startapp 创建了一个应用,你可以把它放在那里,或者你可以为模板库单独创建一个应用. 我们更推荐使用后者,因为你的filter可能在后来的工程中有用. 无论你采用何种方式,请确保把你的应用添加到 INSTALLED_APPS 中. 我们稍后会解释这一点. 第二,在适当的Dja…
今天在创建自定义过滤器的时候,设置已正常.但是在运行后报: 'filter' is not a valid tag library: Template library filter not found, tried django.templatetags.filter,django.contrib.admin.templatetags.filter,django.contrib.staticfiles.templatetags.filter 之前自定义的 templatetags 名称是 fil…
1.自定义过滤器和标签的流程: 1.在某个app下创建一个名为templatetags(必需,且包名不可变)的包.假设我们在名为app01的app下创建了一个templatetags的包,并在该包下创建了一个名为my_tags的文件 2.settings文件中的INSTALLD_APPS内必须含有该app.接下来,我们需要确认settings文件中的INSTALLED_APPS变量中已经有了app01 INSTALLED_APPS = [ 'django.contrib.admin', 'dja…