我有一些值想传递给过滤器并从中获取 URL。
在我的模板中,我有:
{% if names %}
{% for name in names %}
<a href='{{name|slugify|add_args:"custid=name.id, sortid=2"}}'>{{name}}</a>
{%if not forloop.last %} | {% endif %}
{% endfor %}
{% endif %}
在我的模板标签中,我有:
@register.filter
def add_args(value, args):
argz = value.strip() + '-' + 'ARGS'
arglist = args.split(',')
for arg in arglist:
keyval = arg.split('=')
argz.join(keyval[0] + 'ZZ' + keyval[1])
argz.join('QQ')
return argz
输出 URL 应如下所示:
http://foo.org/john-smith-ARGScustidZZ11QQsortidZZ2
其中 ARGS 是参数的开始,ZZ 是 '=' 而 QQ 是一个 '&' 等价物。
首先:这会起作用,但是我在 add_args() 中得到了 custid=name.id,我想让 custid=11 进入。如何将 id 作为 id 而不是文本传入。
另外,有没有办法像在 PHP 中一样只发送一个 key=>value 数组。在 PHP 中,我会构建一个数组,比如说:
arglist = array('custid' => $nameid, 'sortid' => $sortid );
然后我会将 arglist 作为参数传递给add_args()
并且add_args()
我会这样做
foreach( arglist as $key => $value)
$argstr .= $key . 'ZZ' . $value . 'QQ'.
有没有人有更好的方法来完成这项工作?
注意:如果我必须将所有参数作为字符串传递并在过滤器中拆分它们,我不介意。我只是不知道如何将 name.id 作为其值传递...