使用DjangoUeditor将Ueditor移植到Django(BAE环境下)

UEditor是百度出品的开源富文本编辑器,BSD协议,外观、功能都不错。

DjangoUeditor是UEditor在Django上的移植版

项目地址https://github.com/zhangfisher/DjangoUeditor

由于UEditor没有出python版本,所以DjangoUeditor几乎是最简便的现成工具,但是要将DjangoUedtor移植到BAE上,还需要做一些改动。


1、下载https://github.com/zhangfisher/DjangoUeditor/archive/master.zip,将DjangoUeditor放到django项目目录,作为一个单独的app。

2、在INSTALL_APPS里面增加DjangoUeditor app,如下:

INSTALLED_APPS = (
    #........
    'DjangoUeditor',
     )

3、把DjangoUeditor / templates /里的ueditor.html文件移动到你的项目模板根目录

4、把 DjangoUeditor / static / 里的UEditor文件夹改成小写ueditor,移动到项目的static文件夹中

5、在urls.py中增加:

url(r'^ueditor/',include('DjangoUeditor.urls' )),

6、在models中这样定义:

from DjangoUeditor.models import UEditorField
class Blog(models.Model):
        Name=models.CharField(,max_length=100,blank=True)
        Content=UEditorField('内容',height=100,width=500,default='test',imagePath="uploadimg/",imageManagerPath="imglib",toolbars='mini',options={"elementPathEnabled":True},filePath='upload',blank=True)

如果想修改ueditor编辑器的工具栏显示,可以把toolbars='mini'换成/DjangoUeditor/settings.py里TOOLBARS_SETTINGS里的其他字段

 

7、由于BAE中无法直接上传文件,所以先放弃了图片上传的功能。我们可以屏蔽掉不想要的功能,让它不再显示出来,方法如下:

编辑/static/ueditor/dialogs/image/image.html

把不需要的tab注释掉:

<div id="tabHeads">
    <span tabSrc="remote"  class="focus"><var id="lang_tab_remote"></var></span>
    <span tabSrc="local" style="display: none"><var id="lang_tab_local"></var></span>


<!--
    <span tabSrc="imgManager"><var id="lang_tab_imgManager"></var></span>
    <span tabSrc="imgSearch"><var id="lang_tab_imgSearch"></var></span>
-->

</div>

注意:虽然我不需要图片上传功能,

但是如果把<span tabSrc="local" ... </span>注释掉,

<span tabSrc="remote" ... </span>的功能(外链图片)就不能正常使用。

这是个特例!想要完全把图片上传功能屏蔽掉,还需要在<span tabSrc="local"里加上 style="display: none",删除 class="focus" 让它载入但不显示。

 

/static/ueditor/dialogs/image/video.html同样按照这种方法,直接把不需要的tab注释掉即可。

8、在bootstrap环境下,让编辑框自动缩放:

修改/templates/ueditor.html,去掉width:{{ UEditor.width }}px;,加上class="row-fluid"即可:

<textarea name={{ UEditor.name }} id=id_{{ UEditor.name }} class="row-fluid" style="display:inline-block;{{ UEditor.css }}">{{UEditor.value}}</textarea>

9、在表单中使用非常简单,与常规的form字段没什么差别,如下:

from blog.models import Blog

class TestUeditorModelForm(forms.ModelForm): 
    class Meta:
        model=Blog

10、在模板里面: <head> ...... {{ form.media }} #这一句会将所需要的CSS和JS加进来。 ...... </head>

11、关于字数统计等功能设置可以在/static/ueditor/editor_config.js里修改

12、文件、图片上传功能,如果有服务器写文件权限的话,配置起来相当方便。可是BAE环境下的文件上传功能目前好像只有上传到BCS这一个选择。


其实自己在尝试给DjangoUeditor在BAE环境下添加图片上传功能,但是能力有限,出现了问题没法解决。

使用DjangoUeditor进行图片上传,post得到的file.chunks通过bcs.put_object()上传到BCS时,出现错误:

UnicodeDecodeError at /upload/ 'utf8' codec can't decode byte 0xff in position 0: invalid start byte

求问各位高手问题可能出在了哪?

转载于:https://www.cnblogs.com/catmelo/archive/2013/02/08/2909306.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ueditor HTML编辑器是百度开源的HTML编辑器, 本模块帮助在Django应用中集成百度Ueditor HTML编辑器。 安装包中已经集成Ueditor v1.2.2 使用Django-Ueditor非常简单,方法如下: 1、安装方法 **方法一:下载安装包,在命令行运行: python setup.py install **方法二:使用pip工具在命令行运行(推荐): pip install DjangoUeditor 2、在INSTALL_APPS里面增加DjangoUeditor app,如下: INSTALLED_APPS = ( #........ 'DjangoUeditor', ) 3、在urls.py中增加: url(r'^ueditor/',include('DjangoUeditor.urls' )), 4、在models中这样定义: from DjangoUeditor.models import UEditorField class Blog(models.Model): Name=models.CharField(,max_length=100,blank=True) Content=UEditorField('内容 ',height=100,width=500,default='test',imagePath="uploadimg/",imageManagerPath="imglib",toolbars='mini',options={"elementPathEnabled":True},filePath='upload',blank=True) 说明: UEditorField继承自models.TextField,因此你可以直接将model里面定义的models.TextField直接改成UEditorField即可。 UEditorField提供了额外的参数: toolbars:配置你想显示的工具栏,取值为mini,normal,full,代表小,一般,全部。如果默认的工具栏不符合您的要求,您可以在settings里面配置自己的显示按钮。参见后面介绍。 imagePath:图片上传的路径,如"images/",实现上传到"{{MEDIA_ROOT}}/images"文件夹 filePath:附件上传的路径,如"files/",实现上传到"{{MEDIA_ROOT}}/files"文件夹 imageManagerPath:图片管理器显示的路径,如"imglib/",实现上传到"{{MEDIA_ROOT}}/imglib",如果不指定则默认=imagepath。 options:其他UEditor参数,字典类型。参见Ueditor的文档ueditor_config.js里面的说明。 css:编辑器textarea的CSS样式 width,height:编辑器的宽度和高度,以像素为单位。 5、在表单中使用非常简单,与常规的form字段没什么差别,如下: class TestUeditorModelForm(forms.ModelForm): class Meta: model=Blog *********************************** 如果不是用ModelForm,可以有两种方法使用: 1: 使用forms.UEditorField from DjangoUeditor.forms import UEditorField class TestUEditorForm(forms.Form): Description=UEditorField("描述",initial="abc",width=600,height=800) 2: widgets.UEditorWidget from DjangoUeditor.widgets import UEditorWidget class TestUEditorForm(forms.Form): Content=forms.CharField(label="内容",widget=UEditorWidget(width=800,height=500, imagePath='aa', filePath='bb',toolbars={})) widgets.UEditorWidget和forms.UEditorField的输入参数与上述models.UEditorField一样。 6、Settings配置 在Django的Settings可以配置以下参数: UEDITOR_SETTINGS={ "toolbars":{ #定义多个工具栏显示的按钮,允行定义多个 "name1":[[ 'source', '|','bold', 'italic', 'underline']], "name2",[] }, "images_upload":{ "allow_type":"jpg,png", #定义允许的上传的图片类型 "max_size":"2222kb" #定义允许上传的图片大小,0代表不限制 }, "files_upload":{ "allow_type":"zip,rar", #定义允许的上传的文件类型 "max_size":"2222kb" #定义允许上传的文件大小,0代表不限制 },, "image_manager":{ "location":"" #图片管理器的位置,如果没有指定,默认跟图片路径上传一样 }, } 7、其他事项: **本程序基于百度ueditor 1.2.2,安装包里面已经包括了,不需要再额外安装。 **目前暂时不支持ueditor的插件 **Django默认开启了CSRF中间件,因此如果你的表单没有加入{% csrf_token %},那么当您上传文件和图片时会失败
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值