django模板中的filter只能支持一个附加参数
来源:互联网 发布:提升英语水平的软件 编辑:程序博客网 时间:2024/06/06 12:51
想自定义一个复杂一点的filter,折腾了很久,刷新网页看效果,始终不能成功。于是打开django的代码查看,发现根本就不能支持多个参数 .解析模板文件是在${django}/template/__init__.py文件里面,这里定义了一个正则字符串filter_raw_string ,这个字符串展开如下
从里面可以不难看出一个filter,只能带1个额外参数(这个参数可以为3种类型之一,3种类型分别是 i18字符串,常量字符串,和python 变量),因为filter本身是{{variable|filter:arg}}这样的用法,具体到filter的实现函数里面,最多可以有两个参数。
i18字符串:就是_("xxx")这样的国际化字符串,_()是django提供的一个函数,来源显然是GNU gettext
常量字符串:就是普通的字符串
python 变量:python中任意类型(对象)的实例
因为也可以支持python 变量(www.djangoproject.com的文档部分没有及时更新,现在还写着只能支持带双引号的参数形式(就是指常量字符串)),所以如果想要在filter里面传入多个变量,可以有一个变通的方法,把你需要传入的参数,包装成一个list,或者dict,再作为filter的参数,而这个包装只能写在框架的view部分,这样做,就失去了使用filter的初衷。
django的template还是很好用的,但是需求会不断变化,所以还是不够灵活强大,这点也算是这个漂亮web框架的一些瑕疵吧
^_("(?P<i18n_constant>[^"/]*(?:/.[^"/]*)*)")|
^"(?P<constant>[^"/]*(?:/.[^"/]*)*)"|
^(?P<var>[A-Za-z0-9_.]+)|
(?:|
(?P<filter_name>w+)
(?::
(?:
_("(?P<i18n_arg>[^"/]*(?:/.[^"/]*)*)")|
"(?P<constant_arg>[^"/]*(?:/.[^"/]*)*)"|
(?P<var_arg>[A-Za-z0-9_.]+)
)
)?
)
^"(?P<constant>[^"/]*(?:/.[^"/]*)*)"|
^(?P<var>[A-Za-z0-9_.]+)|
(?:|
(?P<filter_name>w+)
(?::
(?:
_("(?P<i18n_arg>[^"/]*(?:/.[^"/]*)*)")|
"(?P<constant_arg>[^"/]*(?:/.[^"/]*)*)"|
(?P<var_arg>[A-Za-z0-9_.]+)
)
)?
)
从里面可以不难看出一个filter,只能带1个额外参数(这个参数可以为3种类型之一,3种类型分别是 i18字符串,常量字符串,和python 变量),因为filter本身是{{variable|filter:arg}}这样的用法,具体到filter的实现函数里面,最多可以有两个参数。
i18字符串:就是_("xxx")这样的国际化字符串,_()是django提供的一个函数,来源显然是GNU gettext
常量字符串:就是普通的字符串
python 变量:python中任意类型(对象)的实例
因为也可以支持python 变量(www.djangoproject.com的文档部分没有及时更新,现在还写着只能支持带双引号的参数形式(就是指常量字符串)),所以如果想要在filter里面传入多个变量,可以有一个变通的方法,把你需要传入的参数,包装成一个list,或者dict,再作为filter的参数,而这个包装只能写在框架的view部分,这样做,就失去了使用filter的初衷。
django的template还是很好用的,但是需求会不断变化,所以还是不够灵活强大,这点也算是这个漂亮web框架的一些瑕疵吧
- django模板中的filter只能支持一个附加参数
- django filter 模板过滤器
- django model filter比较参数
- Django之模板参数
- Django模板之自定义tag和filter
- Django模板中常用过滤器(filter)
- django中的meta参数
- Django模板中的逻辑操作
- django+mysql中的get和filter操作
- 让模板类支持可变模板参数
- 让模板类支持可变模板参数
- 让模板类支持可变模板参数
- django 模板中使用配置参数
- django传递公共参数到模板
- django中传参数给模板
- 模板中的参数可变
- django中的一个小改动
- 一个支持可变参数宏
- 理解SWT布局[1]
- 程序员该做的事
- 人民邮电出版社图灵公司已经出版和即将出版的Amazon Top100图书
- java中的堆&栈
- SAP集成技术
- django模板中的filter只能支持一个附加参数
- First One
- django 0.95修改了Auth模块
- 运气不大好的一天[By tina]
- 企业库缓存应用程序块和ASP.net的缓存,过期检查功能比较
- 技巧和诀窍;在VS 2005里优化ASP.NET 2.0Web项目的Build性能
- 夜行昼不伏[by Ivan]
- 定义多个main及程序不从main进入
- Ajax基础之一:JavaScript中的用户自定义类