github链接 https://github.com/yt-xy/Django-blog
之前代码运行时有点错误,已修改后上传github
Markdown第三方库
(Markdown的处理主要依赖于Python第三方库。相关库有很多,这里我们选择mistune这个库,其他库用起来类似)
先安装pip install mistune
评论内容支持
用户提交评论到评论展示的流程如下:
用户填写评论,提交表单 -> CommentForm 处理表单 -> 验证通过 -> 保存数据到 instance -> instance.save 方法把数据保存到数据库 -> 用户刷新页面 -> 通过comment_block 模板自定义标签获取并展示数据
从这个流程中看,发现几个可以用来对内容的格式进行处理的点:
·在form层保存数据之前,我们对数据进行转换,让保存到数据库中的数据(content)是Markdown处理之后的
·给Comment模型新增属性content_markdown,这个属性的作用是将原content内容进行Markdown处理,然后在模板中不使用comment.content而使用comment.content_markdoen
因为博客中读大于写,所以在写数据时进行转换是比较好的。
comment/forms.py
import mistune
class CommentForm(forms.ModelForm):
...
def clean_content(self):
content = self.cleaned_data