Я хочу разделить имя с пробелом и имя_тега с подчеркиванием. Как я могу разделить через jinja templating

Html файл:

{% for i in i|split:' ' %}
    <tr>
        <td>
            <p>{{ i }}</p>
        </td>
        <td>
            <p>{{ j }}</p>
         </td>
     </tr>
{% endfor %}

custom_tags.py из django import template register = template.Library()

@register.filter(name='split')
def split(obj, sub_strings):
    list1 = obj.name.split(" ")
    list2 = obj.tag_name.split("_")
    if "" in list1:
        list1.remove("")
    return [list1, list2]

Ваш тег шаблона не разделяет на основе переменной, которую вы ему передаете, но, похоже, в этом нет необходимости, так как вы разделяете на ' ' и '_'. Поэтому вы можете вообще убрать это:

{% for i in i|split %}
@register.filter(name='split')
def split(obj):
    list1 = obj.name.split(" ")
    list2 = obj.tag_name.split("_")
    if "" in list1:
        list1.remove("")
    return [list1, list2]

Это дает вам список из двух списков, предположительно вы хотите показать оба списка, потому что у вас есть {{ i }} и {{ j }}? Вам просто нужно переместить цикл for так, чтобы он был вокруг элементов <td>, а не вокруг строки таблицы:

<tr>
    {% for i in i|split:' ' %}
         <td>
            <p>{{ i }}</p>
        </td>
    {% endfor %}
</tr>
Вернуться на верх