Python的Flask框架中集成CKeditor富文本编辑器

ckeditor是目前最优秀的可见即可得网页编辑器之一,它采用javascript编写。具备功能强大、配置容易、跨浏览器、支持多种编程语言、开源等特点。它非常流行,互联网上很容易找到相关技术文档,国内许多web项目和大型网站均采用了ckeditor。

下载CKeditor
访问CKeditor官方网站,进入下载页面,选择Standard Package(一般情况下功能足够用了),然后点击Download CKEditor按钮下载ZIP格式的安装文件。如果你想尝试更多的功能,可以选择下载Full Package。

下载好CKeditor之后,解压到Flask项目static/ckeditor目录即可。

在Flask项目中使用CKeditor
在Flask项目中使用CKeditor只需要执行两步就可以了:

在标签引入CKeditor主脚本文件。可以引入本地的文件,也可以引用CDN上的文件。
使用CKEDITOR.replace()把现存的

立即学习“Python免费学习笔记(深入)”;

  1. nbsp;html>      <span class="pln">A </span><span class="typ">Simple</span><span class="pln"> </span><span class="typ">Page</span><span class="pln"> </span><span class="kwd">with</span><span class="pln"> </span><span class="typ">CKEditor</span>                

登录后复制登录后复制  

因为CKeditor足够优秀,所以第二步也可只为

  1. nbsp;html>      <span class="pln">A </span><span class="typ">Simple</span><span class="pln"> </span><span class="typ">Page</span><span class="pln"> </span><span class="kwd">with</span><span class="pln"> </span><span class="typ">CKEditor</span>                

登录后复制登录后复制  

CKEditor脚本文件也可以引用CDN上的文件,下面给出几个参考链接:

  1.  

登录后复制登录后复制登录后复制

 基础版(迷你版)

  1.  

登录后复制登录后复制登录后复制

 标准版

  1.  

登录后复制登录后复制登录后复制

完整版
开启上传功能
默认配置下,CKEditor是没有开启上传功能的,要开启上传功能,也相当的简单,只需要简单修改配置即可。下面来看看几个相关的配置值:

filebrowserUploadUrl :文件上传路径。若设置了,则上传按钮会出现在链接、图片、Flash对话窗口。

filebrowserImageUploadUrl : 图片上传路径。若不设置,则使用filebrowserUploadUrl值。

filebrowserFlashUploadUrl : Flash上传路径。若不设置,则使用filebrowserUploadUrl值。

为了方便,这里我们只设置filebrowserUploadUrl值,其值设为/ckupload/(后面会在Flask中定义这个URL)。

设置配置值主要使用2种方法:

方法1:通过CKEditor根目录的配置文件config.js来设置:

  1. CKEDITOR.editorConfig = function( config ) {  // ...  // file upload url  config.filebrowserUploadUrl = '/ckupload/';  // ...};

登录后复制

方法2:将设置值放入作为参数放入CKEDITOR.replace():

  1. CKEDITOR.replace('editor1', { filebrowserUploadUrl: '/ckupload/',});

登录后复制

Flask处理上传请求
CKEditor上传功能是统一的接口,即一个接口可以处理图片上传、文件上传、Flash上传。先来看看代码:

  1. def gen_rnd_filename():  filename_prefix = datetime.datetime.now().strftime('%Y%m%d%H%M%S')  return '%s%s' % (filename_prefix, str(random.randrange(1000, 10000)))@app.route('/ckupload/', methods=['POST'])def ckupload():  """CKEditor file upload"""  error = ''  url = ''  callback = request.args.get("CKEditorFuncNum")  if request.method == 'POST' and 'upload' in request.files:    fileobj = request.files['upload']    fname, fext = os.path.splitext(fileobj.filename)    rnd_name = '%s%s' % (gen_rnd_filename(), fext)    filepath = os.path.join(app.static_folder, 'upload', rnd_name)    # 检查路径是否存在,不存在则创建    dirname = os.path.dirname(filepath)    if not os.path.exists(dirname):      try:        os.makedirs(dirname)      except:        error = 'ERROR_CREATE_DIR'    elif not os.access(dirname, os.W_OK):      error = 'ERROR_DIR_NOT_WRITEABLE'    if not error:      fileobj.save(filepath)      url = url_for('static', filename='%s/%s' % ('upload', rnd_name))  else:    error = 'post error'  res = """ window.parent.CKEDITOR.tools.callFunction(%s, '%s', '%s');""" % (callback, url, error)  response = make_response(res)  response.headers["Content-Type"] = "text/html"  return response

登录后复制

上传文件的获取及保存部分比较简单,是标准的文件上传。这里主要讲讲上传成功后如何回调的问题。

CKEditor文件上传之后,服务端返回HTML文件,HTML文件包含JAVASCRIPT脚本,JS脚本会调用一个回调函数,若无错误,回调函数将返回的URL转交给CKEditor处理。

这3个参数依次是:

CKEditorFuncNum : 回调函数序号。CKEditor通过URL参数提交给服务端

URL : 上传后文件的URL

Error : 错误信息。若无错误,返回空字符串

使用蓝本
在大型应用中经常会使用蓝本,在蓝本视图中集成CKEditor的步骤和app视图基本相同。

1. 创建蓝本时需指明蓝本static目录的绝对路径

  1. demo = Blueprint('demo', static_folder="/path/to/static")

登录后复制

2. 对应url需加上蓝本端点

  1. CKEDITOR.replace( "ckeditor_demo", { filebrowserUploadUrl: './ckupload/' } );

登录后复制

3. 设置endpoint端点值

  1. response = form.upload(endpoint=demo)

登录后复制

更多Python的Flask框架中集成CKeditor富文本编辑器相关文章请关注PHP中文网!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
编程技术

python中的面向对象和类的基本语法

2025-2-27 16:35:49

编程技术

Python的Flask站点中集成xhEditor文本编辑器

2025-2-27 16:36:10

0 条回复 A文章作者 M管理员
欢迎您,新朋友,感谢参与互动!
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
私信列表
搜索