正在进入ing...

django接入markdown工具

发布时间:2020-09-09 浏览量: 1059 文章分类: python

关于django接入Markdown的教程,网上其实有很多,但是完整清晰的说清楚的,我发现没有几个,要么是非常老的,要么就是根本护品乱凑的,所以我也下定决心整理一下这篇文章。只要你耐心的看完,我保证你也可以实现django的接入。

环境如下:

python = 3.8.5
django = 3.1.1

因为创建django项目配置这些都不属于这里要说的,所以我着重记录的是接入markdown相关的内容。

安装

不需要去下载什么乱七八糟的东西,只要你的pip能用,直接运行安装下面模块即可

pip install django-mdeditor  # 安装的版本是0.1.18

接入

直接在django项目的settings里面的INSTALLED_APPS里面引入mdeditor即可。 然后在models创建的时候,可以先引入from mdeditor.fields import MDTextField,然后注册类型content = MDTextField(') 实际按照上面这个步骤,我们已经完成了接入。这个时候只要将模型添加到admin中,然后登陆后台,其实都是可以查看到的,会有一个编辑器已经显示出来了。 django接入markdown

使用及完善

虽然上面已经完成了所有功能的接入,但在发布使用上面,实际仍然不好,如果你够仔细使用的话,会发现上传图片功能也是坏的。这个时候,我们还需要继续的完善一下。

先完成上传图片功能

在项目的根`urls`里面在添加一条记录`path('mdeditor/',include('mdeditor.urls'))`
同时为了方便我们在本地测试,我们可以做一下优化
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
from django.urls import path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('mdeditor/',include('mdeditor.urls'))
]

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

增加以上设置,这个时候在重新去上传图片即可正确上传(记得要在settings中设置好MEDIA_ROOTMEDIA_URL

前台展示问题

这个问题很好解决,在我们返回的views文件里面,处理一下要返回的内容

        article_obj.content = markdown.markdown(article_obj.content,extensions=[
            'markdown.extensions.extra',
            'markdown.extensions.codehilite',
            'markdown.extensions.toc',
        ])

这样处理好以后在返回给前端渲染,前端模板在渲染的时候也要加上safe过滤器就大功告成了。

代码美化问题

我们还需要安装一个第三方的模块,pygments,直接pip install pygments。 然后在命令行执行生成一下美化的样式pygmentize -f html -a .codehilite -S youername > yourname.css -a .codehilite指所有css选择器都具有.codehilite这一祖先选择器 -S default就是指定所需要的样式了,各位可以对各种样式都尝试一下。 tango.css将内容输出到tango.css文件中

然后将这个文件放入static文件夹中,然后在文章页面引入即可。