博客后台适配mdeditor,修复前端显示

在博客文章写作过程中,一直再寻找一个合适的编辑器。先后尝试了wangEditor、layui-Editor在用户页面得到应用。但文章的整洁程度难以和markdown媲美。mdendtor是个不错的选择,在安装完Django-enditor之后,最大的难题就是前端显示了。最初引入python库markdown,转化效果不是很理想。紧接着找到前端js对应的showdown.js库,显示效果依旧不好。于是,想到后台的预览窗口是怎么显示,直接把mdeditor的js抄到前端就行了。

后端适配

安装django-mdeditor

pip install django-mdeditor

添加app到sittings

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    ......
    'django.contrib.sitemaps',
    'mdeditor', # mdeditor编辑器
]

修改model

from mdeditor import fields as md_models

class Article(models.Model):
    id = models.AutoField(primary_key=True, max_length=32)
    ......
    content = md_models.MDTextField(verbose_name='正文', blank=False)
    ......

此时,刷新后端就显示正常了

前端适配

找到需要的js和css

在site-packages目录下找到如下js和css

mdeditor\static\mdeditor\js\lib\marked.min.js
mdeditor\static\mdeditor\js\editormd.js
mdeditor\static\mdeditor\css\editormd.preview.css

找到之后放到static目录下并在相应页面引入

前端适配

####css和js处理

<!--引入样式文件-->
<link rel="stylesheet" href="/static/editor.md-master/css/editormd.preview.css"/>

<!--引入js文件-->
<script src="/static/editor.md-master/lib/marked.min.js"></script>
<script src="/static/editor.md-master/editormd.js"></script>

<!--处理逻辑-->
<script>
editormd.markdownToHTML("article_content", { //article_content是html文档的ID
emoji: true,
taskList: true,
});
</script>

####html的处理

需要注意的是:style里面所有的内容不能少,否则造成样式会扭曲。textarea标签不能缺少,不然会造成代码的不识别。

&lt;div id=&quot;article_content&quot;
   style=&quot;-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing: border-box;&quot;&gt;
     &lt;textarea style=&quot;display:none&quot;&gt;{{ article.content | safe}}&lt;/textarea&gt;
 &lt;/div&gt;
后续注意

这样还不够,原作者这个markdownToHTML的方法并未考虑兼容原有纯HTML的文章。这样会造成我们非MD格式的文章样式上出现扭曲。此时可以打开editormd.js这个文件,搜索editormd.markdownToHTML方法。

var markdownDoc = (settings.markdown === "") ? saveTo.val() : settings.markdown;代码的下一行添加

if(markdownDoc.startsWith('<') || markdownDoc.endsWith('>')){
            $("#" + id).html(markdownDoc)
            return
        }

这样解决下来并不是很完美,最好判断下这个文章是不是一个XML文档比较稳妥,技术有限不能解决。留给你解决

原文地址:http://www.bianbingdang.com/article_detail/144.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前端HTML中插入图片可以使用`<img>`标签。该标签有几个属性可以用来设置图片的路径、大小和替代文本。以下是一个示例代码: ```html <img src="图片的路径" alt="图片的替代文本" width="图片的宽度" height="图片的高度"> ``` 其中,`src`属性用于指定图片的路径,可以是图片的相对路径、绝对路径或者是网络链接。`alt`属性用于提供图片的替代文本,当图片无法加载时会显示该文本。`width`和`height`属性分别用于设置图片的宽度和高度。 例如,如果要插入一张宽度为500像素、高度为300像素的图片,可以使用以下代码: ```html <img src="图片的路径" alt="图片的替代文本" width="500" height="300"> ``` 请注意,图片的路径应该根据实际情况进行替换,以确保能够正确加载图片。 #### 引用[.reference_title] - *1* [怎样在html中插入图片?](https://blog.csdn.net/qq_48937065/article/details/124345064)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [前端第二章:9.HTML如何在网页中添加图片(img标签使用方法,以及img标签属性:alt、height、width);图片...](https://blog.csdn.net/qq_43768851/article/details/124417931)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值