Как отобразить строку текста в теге li в шаблоне Django? - PullRequest
0 голосов
/ 08 марта 2019

В моих записях mysql сохранен текст, который выглядит следующим образом:

Handmade item

Materials: wooden handcrafted handle, professional laser engraved rubber, brown 
cardboard special gift box, authorial stamp passport

приведенный выше текст представляет собой обзор моей модели аксессуаров:

from django.db import models

class Accessory(models.Model):
    img = models.ImageField(upload_to='accessories/', default='accessories/no.png')
    name = models.CharField(max_length=50)
    price = models.DecimalField(max_digits=5, decimal_places=2)
    img_inside1 = models.ImageField(upload_to='accessories/', default='accessories/no.png', blank=True)
    img_inside2 = models.ImageField(upload_to='accessories/', default='accessories/no.png', blank=True)
    img_inside3 = models.ImageField(upload_to='accessories/', default='accessories/no.png', blank=True)
    title = models.CharField(max_length=50)
    overview = models.TextField(blank=True)
    description = models.TextField()

Я хочу отображать каждую строку в <li> тэге

выглядеть так:

                 <ul>
                    <li><p>Handmade item</p></li>
                    <li><p>Materials: wooden handcrafted handle, 
                       professional laser engraved rubber, brown cardboard 
                      special gift box, authorial stamp passport</p>
                    </li>
                </ul>

с использованием фильтра linebreaks не будет применяться <ul> стиль по умолчанию (с отображением маркеров). заранее спасибо!

1 Ответ

2 голосов
/ 08 марта 2019

Быстрое и грязное решение: разбить строку на новые строки и перебрать результат.

class Accessory(models.Model):
    # ...
    overview = models.TextField()

    def overview_lines(self):
        return filter(None, (line.strip() for line in self.overview.splitlines()))

, а затем

             <ul>
                {% for line in howeryounamedyourobject.overview_lines %}                    
                <li><p>{{ line }}</p></li>
                {% endfor %}
            </ul>

Лучшие решения:

либо укажите подходящую модель для материалов (с отношением многие ко многим), либо используйте разметку вместо простого текста в поле «Обзор».

...