在 django 博客站点中集成文本编辑器

Posted

技术标签:

【中文标题】在 django 博客站点中集成文本编辑器【英文标题】:Integrate the text editor in django blog site 【发布时间】:2021-11-16 05:43:03 【问题描述】:

你知道富文本编辑器吗?请访问medium.com,我希望你会被这个最漂亮的文本编辑器所启发,我想在我的django博客中集成这种类型的编辑器,用户可以在那里写他们的文章,我该如何集成呢?我现在使用 TinyMce 编辑器,但体验不是更好。还记得有件事告诉我,如果用户将图像上传到哪里,图像将保存在哪里?

我的 TinyMce 代码

<script
  src="https://cdn.tiny.cloud/1/no-api-key/tinymce/5/tinymce.min.js"
  referrerpolicy="origin"
></script>
<script>
  tinymce.init(
    selector: "textarea#mytextarea",
    /* plugins are the things which i can use in toolbar, menubar etc */
        plugins: [
      'advlist autolink link image lists charmap print preview hr anchor pagebreak',
      'searchreplace wordcount visualblocks visualchars code fullscreen insertdatetime media nonbreaking',
      'table emoticons template paste help imagetools'
    ],
    toolbar: 'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | ' +
      'bullist numlist outdent indent | link image | print preview media fullpage | ' +
      'forecolor backcolor emoticons | help',
    menu: 
      favs: title: 'My Favorites', items: 'code visualaid | searchreplace | emoticons',
    ,
    menubar: 'favs file edit view insert format tools table help',
)
</script>

【问题讨论】:

【参考方案1】:

使用summer note是VIP文本编辑器,它也有图片上传选项,图片会以blob二进制格式保存到DB列。只包含一个 js 链接和一个 CSS 链接。然后初始化对象。

CSS 链接

<link href="https://cdn.jsdelivr.net/npm/summernote@0.8.18/dist/summernote.min.css" rel="stylesheet">

js 链接

<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/summernote@0.8.18/dist/summernote.min.js"></script>

使用 textarea 作为选择器将应用于所有 texarea 元素。 如果您只想应用于特定的文本区域。只需将选择器从 $('textarea').summernote(); 更改为 $('.className').summernote();

<script>
$(document).ready(function() 
    
  $('textarea').summernote();

);
</script>

【讨论】:

【参考方案2】:

你可以试试CK Editor。 TinyMCE 需要会员资格,而使用 CK 编辑器则不需要任何会员资格,它对于与博客相关的 web 应用程序非常方便。

集成步骤需要完成以下任务 -

在 settings.py:

INSTALLED_APPS = [
    ...
    'ckeditor',
]

在models.py: 导入 RichTextField 并将字段类型分配给您的必填字段

from ckeditor.fields import RichTextField
class Report(models.Model):
    report_details = RichTextField(null=True,blank=True)

在forms.py:导入

from ckeditor.fields import RichTextFormField
class SomeForm(forms.ModelForm):
    class Meta:
        widgets = 
            'report_details': RichTextFormField(),
        

在模板中:添加以下 javascripts -

<script type="text/javascript" src="% static "ckeditor/ckeditor-init.js" %"></script>
<script type="text/javascript" src="% static "ckeditor/ckeditor/ckeditor.js" %"></script>

【讨论】:

问题是“如何我可以集成这种类型的编辑器”,所以仅仅命名一个库,你还没有回答 OP 的问题。请考虑在您的回答中添加edit 以解决该问题。

以上是关于在 django 博客站点中集成文本编辑器的主要内容,如果未能解决你的问题,请参考以下文章

django中富文本编辑器KindEditor的基本使用

python3 Django集成Ueditor富文本编辑器

django之百度Ueditor富文本编辑器后台集成

django——文本编辑器

django后台集成富文本编辑器Tinymce的使用

django xadmin 集成DjangoUeditor富文本编辑器