您的位置:首页 > 产品设计 > UI/UE

django整合ueditor富文本编辑器并解决图片视频等无法上传显示问题

2017-03-01 17:33 239 查看
         一般django后台的文本编辑器比较简单,所以增加ueditor编辑器。
        ueditor编辑是百度开发开源产品,官网没django版本。
        django版本下载地址   https://github.com/zhangfisher/DjangoUeditor/archive/master.zip 
         解压后将 DjangoUeditor  文件夹复制到django项目目录下,跟app目录同级

        开始修改 :
               url.py文件  
                     
                      导入              from  DjangoUeditor  import  urls as  DjangoUeditor_urls                   
                     增加路由        url(r'^ueditor/', include(DjangoUeditor_urls)) 
             
            models  文件  
                       导入        from DjangoUeditor.models  import   UEditorField
                      对于需要使用编辑器的子段定义

                   context = UEditorField('内容',height=300, width=1000, default='', blank=True,imagePath="news", toolbars='full', filePath='files')

                  其中定义了文本框的大小和字段默认值,imagePath 和filePath  定义图片,视频和文件上传的路径 (相对于                                    settings.MEDIA_ROOT)
                  toolbars 定义功能的显示复杂度  一般有 mini,besttome,nomal,full 等选项,具体在DjangoUeditor.settings中设置

         这样就初步可以使用了

          但是图片和视频等上传还是不行,上传失败 ,原因是因为上传图片时open的是个路径,当传视频就可以了
         这个就需要修改文件DjangoUeditor.views 文件   修改函数save_upload_file 大概在38行左右
         
          直接修改成这样,根据上传的action进行不同的操作

点击(此处)折叠或打开

  1. def save_upload_file(PostFile,FilePath,action):

  2.     if action == 'uploadfile':
  3.         FilePathWrite = FilePath+'/'+str(PostFile)
  4.     elif action == 'uploadimage':
  5.         FilePathWrite = FilePath+'/'+str(PostFile)
  6.     #elif action == 'uploadvideo':
  7.     # FilePathWrite = videofile(FilePath,'/video/')
  8.     else:
  9.         FilePathWrite = FilePath

  10.     try:
  11.         f = open(FilePathWrite, 'wb')
  12.         for chunk in PostFile.chunks():
  13.             f.write(chunk)
  14.     except Exception as E:
  15.         f.close()
  16.         return u"写入文件错误:"+ E.message
  17.     f.close()
  18.     return u"SUCCESS"
               ok改完了发现,是可以上传了,对应的文件夹中也有上传图片,但是在对话框中却无法显示图片,对应的路径是错误的,这时候要修改另一个函数

    还是修改DjangoUeditor.views 文件 ,大约在258行,需要重新拼接下返回的图片路径,重新修改 return_info 字典,修改为这样,还是通过上传操作重新定义返回的url


点击(此处)折叠或打开

  1. import urllib
  2. if action == 'uploadvideo':
  3.             url = urllib.basejoin(USettings.gSettings.MEDIA_URL, OutputPathFormat)
  4.         else:
  5.             url = urllib.basejoin(USettings.gSettings.MEDIA_URL, OutputPathFormat) + '/' + upload_file_name

  6.         return_info = {
  7.             'url': url, # 保存后的文件名称
  8.             'original': upload_file_name, # 原始文件名
  9.             'type': upload_original_ext,
  10.             'state': state, # 上传状态,成功时返回SUCCESS,其他任何值将原样返回至图片上传框中
  11.             'size': upload_file_size
  12.         }

这下子就ok了,能够上传图片,视频,文件了,也能基本使用了。不过还有一些比如涂鸦什么的那些由于也用不到,咱未研究。


ok可以使用。




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: