django接入markdown工具
关于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
中,然后登陆后台,其实都是可以查看到的,会有一个编辑器已经显示出来了。
使用及完善
虽然上面已经完成了所有功能的接入,但在发布使用上面,实际仍然不好,如果你够仔细使用的话,会发现上传图片功能也是坏的。这个时候,我们还需要继续的完善一下。
先完成上传图片功能
在项目的根`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_ROOT
和MEDIA_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
文件夹中,然后在文章页面引入即可。