Скобки, которые вы видите, являются просто автоматическим способом отображения списка в JAVA (например, при использовании System.out.println(list);
.
Если вы не хотите, чтобы они отображались при его показе, вы можете создать custom method:
public void showList(List<Integer> listInt)
{
for(int el : listInt)
{
System.out.print(el + ", ");
}
}
Затем настройте этот код, чтобы показать это по своему вкусу!
Это возможно и довольно просто.
Django только позволяет один аргумент Вашему фильтру, но нет никакой причины, Вы не можете поместить все свои аргументы в единственную строку с помощью запятой для разделения их.
Так, например, если Вы хотите фильтр, который проверяет, находится ли переменная X в списке [1,2,3,4], Вы захотите шаблонный фильтр, который похож на это:
{% if X|is_in:"1,2,3,4" %}
Теперь мы можем создать Ваш templatetag как это:
from django.template import Library
register = Library()
def is_in(var, args):
if args is None:
return False
arg_list = [arg.strip() for arg in args.split(',')]
return var in arg_list
register.filter(is_in)
строка, которая создает arg_list, является выражением генератора, которое разделяет строку args на всех запятых и называет .strip () для удаления любого продвижения и конечных пробелов.
, Если, например, 3-м аргументом является интервал тогда просто, сделайте:
arg_list[2] = int(arg_list[2])
Или если все они - ints, сделайте:
arg_list = [int(arg) for arg in args.split(',')]
РЕДАКТИРОВАНИЕ: теперь для специфического ответа на вопрос при помощи ключа оцените пар как параметры, можно использовать тот же класс использование Django для парсинга строк запроса из URL, который тогда также обладает преимуществом обработки кодировки символов правильно согласно settings.py.
Так, как со строками запроса, каждый параметр разделяется '&';:
{{ attr.name|replace:"cherche=_&remplacement= " }}
Тогда Ваша функция замены будет теперь похожа на это:
from django import template
from django.http import QueryDict
register = template.Library()
@register.filter
def replace(value, args):
qs = QueryDict(args)
if qs.has_key('cherche') and qs.has_key('remplacement'):
return value.replace(qs['cherche'], qs['remplacement'])
else:
return value
Вы могли ускорить это некоторые рискуя тем, чтобы делать некоторые неправильные замены:
qs = QueryDict(args)
return value.replace(qs.get('cherche',''), qs.get('remplacement',''))
Не возможный согласно этот раздел из документов:
Пользовательские фильтры являются просто функциями Python, которые берут один или два аргумента:
Эта функция была отмечена как WONTFIX в 2013 Trac Django: http://code.djangoproject.com/ticket/1199
Heres плохая идея, но работы:
{{ xml|input_by_xpath:"{'type':'radio','xpath':'//result/value'}" }}
и
@register.filter
def input_by_xpath(device, args):
args = eval(args)
...
result = "<input type=\"%s\" value=\"%s\" name=\"%s\"/>"%(args['type'],value,args['xpath'])
return mark_safe(result)
from django.template import Library
import re
register = Library()
def search(value, search):
return re.sub(search, '#f4x@SgXXmS', value)
def replace(value, replace):
return re.sub('#f4x@SgXXmS', replace, value)
register.filter(search)
register.filter(replace)
В шаблоне:
{{ "saniel"|search:"s"|replace:"d" }}