起因
这2天更新了个人博客网站的代码,基本把大部分功能做完了。刚刚更新完后,打开博客首页一看网页上有几个奇怪的小方块,在博客正文里却没有了。查看网页源码,多了好几个<code> </code>
这是什么?我记得我没在页面中写过,赶紧回去看源码发现源码中没有写过这个啊,再开自己的runserver
调试,发现在自己的电脑上就是正常的。难道在部署的机器上有问题?不会啊,没更新代码之前没有这个问题啊!
过程
检查了很久才发现,原来我用markdown
显示前端页面代码,makedown
会在前端用<code> import django </code>
来显示代码。在首页展示博客正文时,用django template tags
的truncatechars
来只显示博客文章的前200个字符,结果truncatechars
把html代码截断了,只有前一个<code>
,没有</code>
,所以导致前端页面的不正常显示。可是在我自己的电脑上却没有这个问题,看来原因就是开发环境和生产环境的django
版本不统一。
结果
最后查看了最新的文档更换使用truncatewords_html
更好
truncatewords_html
Similar to truncatewords, except that it is aware of HTML tags. Any tags that are opened in the string and not closed before the truncation point, are closed immediately after the truncation.
This is less efficient than truncatewords, so should only be used when it is being passed HTML text.
For example:
{{ value|truncatewords_html:2 }}
If value is <p>Joel is a slug</p>
, the output will be <p>Joel is ...</p>
.
Newlines in the HTML content will be preserved
后记
此事得出的教训及经验:
- 需要对开发环境和生产环境统一性的检查
- 文档看的不仔细后果很严重啊