思路:
1,用django-mdeditor写博客内容的markdown语法,并存入数据库。想加图片的话:(1)图片链接(2)用django-mdeditor的前端显示方法
2,用markdown渲染数据库中博客内容,并显示在前端
安装 django的富文本编辑器
pip install django-mdeditor
将mdeditor集成到django
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
'comment',
# 富文本编辑器
'mdeditor'
]
添加数据模型
数据迁移
admin后台注册
admin.site.register(Blog)
查看效果,后台已经集成了markdown
前端显示
安装:markdown
pip install markdown
思路:先获取该文章id—>用markdown渲染存入数据库中正文的字段—>通过前端显示
# 单个博客显示
def blog_single(request, **kwargs):
# 获取url参数文章id,
id = kwargs['id']
#
singleblog = Blog.objects.filter(id=id).first()
# 调用views_count,阅读数计数
Blog.views_count(singleblog)
# 博客评论显示
sblog = Blog.objects.get(id=id)
# 用related_name反向查询该文章的所有评论表的信息
blog_comment = sblog.comment_blog.all().order_by('-created_time')[:5]
# print(blog_comment)
# 查询分类
cate_name = Category.objects.order_by('name')
# 将博客内容用makrdown渲染,并返回给前端
singleblog_body = markdown(singleblog.body)
#print(singleblog_body)
return render(request, 'single-post.html', {'singleblog': singleblog,
"cate_name": cate_name,
'blog_comment': blog_comment,
'singleblog_body': singleblog_body})
前端:
<!--Django 出于安全方面的考虑,任何的 HTML 代码在 Django 的模板中都会被转义显示原始的 HTML-->
{{ singleblog_body|safe }}
效果: