我在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>
的默认样式(显示项目符号)。提前致谢!
答案 0 :(得分:2)
快速又肮脏的解决方案:在换行符上拆分字符串并遍历结果。
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>
更好的解决方案:
要么具有适当的材料模型(多对多关系),要么在“概述”字段中使用标记而不是纯文本。