Django中遇到的一个html转义的问题
1、问题描述:有些页面上的字体突然变细,变红。
而正常的应该是这样:
起初我想不明白为什么会出现这种现象?因为同样的标签,同样的CSS,怎么会出现不同的样式呢?
2、发现问题原因
通过审查元素,发现,在该标签外层多加了code标签,类似于这样:
.......
我不明白这是怎么加的,我没有添加这个标签啊!后来才恍然大悟,是我的摘要中含有单个code标签,后续Django给自动补全了,这样被code裹住的标签就是按照bootstrap的样式显示。
3、问题原因详细说明
首先说下我的逻辑。 在写文章中,我用Markdown编辑内容,存到content字段,然后将markdown转换为HTML内容,并存储到content_html字段,然后abstract字段存储content_html的前200个字符。代码:
class Model(models.Model):
def save(self):
self.content_html = markdown(self.content,output_format='html5')
self.abstract = self.content_html[:200]
super(Article,self).save()
在我的content_html中有代码段,那在截取的时候就很有可能只截取了
,却没有
。
abstract类似如下:
然后我在模板里关闭了自动转义,含有单个code的会被补全。所以就出现了上面的问题。
4、解决办法
重新写保存逻辑,将abstract直接保存为markdown原文。
def save(self):
self.content_html = markdown(self.content,output_format='html5')
self.abstract = self.content_html[:200]
super(Article,self).save()
这样就不会出现这种问题了。
5、总结
进步就是在不断发现问题,思考问题,解决问题的过程中发生的。
--------EOF---------
微信分享/微信扫码阅读
微信分享/微信扫码阅读