我正在尝试为博客制作模型并尝试在我的模板中对其进行格式化。目前我在" Body"博客,它将包含所有内容,但每当我使用
将其嵌入我的模板时{% for i in blog %}
{{ i.body }}
{% endfor %}
现在,如果博客或图像或一段代码中有链接,我可以相应地对其进行格式化,因为列body
内的所有数据都嵌入为一个大的字符串块。我试图改变我的模型
博客的正文和子标题各有10个TextFields
。我也有不同的TextFields用于链接,这是最终模型的外观,有人可以告诉我这是否是正确的方法。
class Blog(models.Model):
title = models.CharField(max_length=100, unique=True)
slug = models.SlugField(max_length=100, unique=True)
para1 = models.TextField(blank=True)
subheading1 = models.CharField(max_length=200, blank=True)
para2 = models.TextField(blank=True)
subheading2 = models.CharField(max_length=200, blank=True)
para3 = models.TextField(blank=True)
subheading3 = models.CharField(max_length=200, blank=True)
para4 = models.TextField(blank=True)
subheading4 = models.CharField(max_length=200, blank=True)
para5 = models.TextField(blank=True)
posted = models.DateTimeField(db_index=True, auto_now_add=True)
category = models.ForeignKey('blog.Category', on_delete=models.CASCADE)
codeblock = models.ForeignKey('blog.Code', on_delete=models.CASCADE, null=True)
img = models.ImageField(null=True)
headliner = models.BooleanField(default=0)
答案 0 :(得分:2)
不是为每个段落使用不同的字段,这不是一个好的做法,你可以存储在body
字段html格式化的值中,如下所示:
<H3>Title</H3><br>
<i>Some text</i>
要正确渲染此类正文,您可以在模板中使用safe
过滤器:
{% for i in blog %}
{{ i.body|safe }}
{% endfor %}
注意safe
过滤器禁用html转义,因此只有在body
值的来源可信时才应使用它。
<强> UPD 强>
如果您需要格式化文本的特定部分,您可以写custom template filter这样的内容:
def bold_some_text(value): # Only one argument.
return value.replace('Some text', '<b>Some text</b>', 1)
并将此新标记用于safe
:
{% for i in blog %}
{{ i.body|bold_some_text|safe }}
{% endfor %}