Django轻松使用富文本编辑器-KindEditor

Django轻松使用富文本编辑器-KindEditor



        由于需要在django admin中使用到富文本编辑器,由于我比较喜欢KindEditor,于是写了个自定义widget



        1、首先从KindEditor主页下载,并解压至你的static文件存放目录(略...)

        

        2、编写自定义widget:

  1. from django import forms


  2. from django.conf import settings 


  3. class KindEditor(forms.Textarea):


  4.         class Media:


  5.                 js = (settings.MEDIA_URL + 'js/widgets/kindeditor.js',)


  6.                 css = (settings.MEDIA_URL + 'js/widgets/kindeditor.css',)


  7.         def __init__(self, attrs = {}):


  8.                 attrs['rel'] = 'kind'


  9.                 super(KindEditor, self).__init__(attrs)

复制代码

3、在form中使用上面的widget:

  1. from customwidget.editor import KindEditor

  2. from django import forms

  3. from app.models import MyModel

  4. from django.contrib import admin


  5. class MyModelAdminForm(forms.ModelForm):

  6.         pass

  7.         

  8.         class Meta:

  9.               model = MyModel

  10.               widgets = {

  11.                 'fieldname':KindEditor()


  12.               }


  13. class MyModelAdmin(admin.ModelAdmin):



  14.          form = MyModelAdminForm


  15. admin.site.register(MyModel, MyModelAdmin) 



复制代码

4、需要在模板中使用JS来初始化KindEditor(请确保你的模板中已加载jQuery, django admin中已自带,不过namespace换到了django之下):

  1. {%extends "admin/change_form.html"%}

  2. {%block extrahead%}

  3.     {{block.super}}

  4.      <script type="text/javascript">

  5.            django.jQuery(document).ready(function(){

  6.                 django.jQuery("textarea[rel='kind']").each(function(n){

  7.                           KE.show({

  8.                                id : django.jQuery(this).attr("id"),

  9.                           });

  10.                 });

  11.            });

  12.       </script>

  13. {%endblock%}

复制代码

4、需要注意的地方:

                a) 所下载的kindeditor文件包存放的位置及settings里的MEDIA_URL地址(其实就是保证最终生成的JS和CSS访问路径是正确的)

                b) 若非django admin的模板,请自行加载jQuery


你可能感兴趣的:(Django轻松使用富文本编辑器-KindEditor)