找回密碼
 註冊
搜索
查看: 130|回復: 0

[教學] Flask render_template 崁入Ckeditor 4.5.3 編輯器 並上傳圖片

[複製鏈接]
發表於 昨天 18:03 | 顯示全部樓層 |閱讀模式
Push to Facebook
在網域上要用ckeditor,要上傳圖片變成了很困難的事
於是不停地嘗試,終於找到適合的語法
用了線上版的 ckeditor 4.5.3


建立ckeditor_test.py
存檔路徑 static/upload
  1. from flask import request,url_for,render_template, make_response
  2. import os
  3. import datetime
  4. import random

  5. app.config['CKEDITOR_FILE_UPLOADER'] = os.path.join(os.path.dirname(__file__), 'static/upload')

  6. @app.route('/ckeditor_test')
  7. def ckeditor_test():
  8.     return render_template("public/ckeditor_test.html")

  9. def gen_rnd_filename():
  10.     filename_prefix = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
  11.     return '%s%s' % (filename_prefix, str(random.randrange(1000, 10000)))

  12. @app.route('/ckupload/', methods=['POST', 'OPTIONS'])
  13. def ckupload():
  14.     """CKEditor file upload"""
  15.     error = ''
  16.     url = ''
  17.     callback = request.args.get("CKEditorFuncNum")
  18.     if request.method == 'POST' and 'upload' in request.files:
  19.         fileobj = request.files['upload']
  20.         fname, fext = os.path.splitext(fileobj.filename)
  21.         rnd_name = '%s%s' % (gen_rnd_filename(), fext)
  22.         filepath = os.path.join(app.config['CKEDITOR_FILE_UPLOADER'], rnd_name) #存檔路徑
  23.         dirname = os.path.dirname(filepath)
  24.         if not os.path.exists(dirname):
  25.             try:
  26.                 os.makedirs(dirname)
  27.             except:
  28.                 error = 'ERROR_CREATE_DIR'
  29.         elif not os.access(dirname, os.W_OK):
  30.             error = 'ERROR_DIR_NOT_WRITEABLE'
  31.         if not error:
  32.             fileobj.save(filepath)
  33.             url = url_for('static', filename='%s/%s' % ('upload', rnd_name))
  34.     else:
  35.         error = 'post error'
  36.     res = """<script type="text/javascript">
  37.              window.parent.CKEDITOR.tools.callFunction(%s, '%s', '%s');
  38.              </script>""" % (callback, url, error)
  39.     response = make_response(res)
  40.     response.headers["Content-Type"] = "text/html"
  41.     return response
複製代碼


ckeditor 4.5.3分為standard, basic, full版本


建立 ckeditor_test.html (full版本)
改這裡
<script src="https://cdn.ckeditor.com/4.5.3/full/ckeditor.js"></script>



  1. <script src="https://cdn.ckeditor.com/4.5.3/full/ckeditor.js"></script>

  2.     <body>
  3.         <textarea name="editor1"></textarea>
  4.         <script>

  5.             CKEDITOR.replace( 'editor1', {
  6.                 filebrowserImageUploadUrl: '/ckupload/'

  7.             });
  8.         </script>
  9.         <style>
  10.          .cke_notifications_area  { display: none; }
  11. </style>
  12.     </body>
複製代碼


展示圖:
full版本 點圖片標誌就可以上傳圖片

ckeditor01.png

ckeditor04.png

basic版本
ckeditor02.png
standard版本
ckeditor03.png

文章來源:NetYea 網頁設計

https://github.com/gustitammam/F ... d-image/tree/master

https://cdn.ckeditor.com/
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

Archiver|手機版|小黑屋|TShopping

GMT+8, 2025-11-22 20:27 , Processed in 0.023892 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回復 返回頂部 返回列表