У меня есть несколько значений, которые я хотел бы передать в фильтр и получить из него 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 - «&» эквивалент.
Прежде всего: это сработает, но я получаю custid = name.id, поступающий в add_args (), где я хочу, чтобы в него вошел custid = 11. Как передать id как идентификатор, а не как текст .
Кроме того, есть ли способ просто отправить массив ключ => значение, как в PHP.
В PHP я бы построил массив, скажем:
arglist = array('custid' => $nameid, 'sortid' => $sortid );
Тогда я передал бы arglist в качестве аргумента add_args()
, а в add_args()
я бы сделал
foreach( arglist as $key => $value)
$argstr .= $key . 'ZZ' . $value . 'QQ'.
У кого-нибудь есть лучший способ сделать эту работу?
Примечание: если мне нужно передать все аргументы в виде строки и разделить их в фильтре, я не возражаю. Я просто не знаю, как передать name.id в качестве значения ...