Списки разделенных запятой значений в шаблонах django

Вы могли записать:

<% Html.BeginForm("MyAction", "MyController", FormMethod.Post); %>
<input type="submit" name="button" value="Send" />
<input type="submit" name="button" value="Cancel" />
<% Html.EndForm(); %>

И затем в проверке страницы, если имя == "Отправляет" или называет == "Отмена"...

68
задан Alasdair 6 August 2009 в 02:58
поделиться

3 ответа

Вот фильтр, который я написал для решения моей проблемы (он не включает оксфордскую запятую)

def join_with_commas(obj_list):
    """Takes a list of objects and returns their string representations,
    separated by commas and with 'and' between the penultimate and final items
    For example, for a list of fruit objects:
    [<Fruit: apples>, <Fruit: oranges>, <Fruit: pears>] -> 'apples, oranges and pears'
    """
    if not obj_list:
        return ""
    l=len(obj_list)
    if l==1:
        return u"%s" % obj_list[0]
    else:    
        return ", ".join(str(obj) for obj in obj_list[:l-1]) \
                + " and " + str(obj_list[l-1])

Чтобы использовать его в шаблоне: {{fruit | join_with_commas}}

8
ответ дан 24 November 2019 в 13:57
поделиться

Первый выбор: используйте существующий тег шаблона соединения.

http: //docs.djangoproject .com / en / dev / ref / templates / builtins / # join

Вот их пример

{{ value|join:" // " }}

Второй вариант: сделать это в представлении.

131
ответ дан 24 November 2019 в 13:57
поделиться

Я бы предложил пользовательский шаблон шаблонов django , а не пользовательский tag - фильтр удобнее и проще (где это возможно, как здесь). {{fruit | joinby: ","}} выглядит как то, что я хотел бы иметь для этой цели .. ..с настраиваемым фильтром joinby :

def joinby(value, arg):
    return arg.join(value)

что, как вы видите, само по себе простота!

34
ответ дан 24 November 2019 в 13:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: