最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django集成百度富文本編輯器uEditor攻略

 更新時(shí)間:2014年07月04日 12:13:45   投稿:hebedich  
UEditor是由百度web前端研發(fā)部開發(fā)所見即所得富文本web編輯器,具有輕量,可定制,注重用戶體驗(yàn)等特點(diǎn),開源基于MIT協(xié)議,允許自由使用和修改代碼。

首先從 ueEditor官網(wǎng) 下載最新版本的包,目前官網(wǎng)上提供了ASP、.NET、PHP、JSP版本的,django版本只有一個(gè)第三方個(gè)人開發(fā)的,但看上出配置起來稍微復(fù)雜一點(diǎn)。

這里不介紹uEditor的使用方法,也不過多解釋uEditor的配置方法,官網(wǎng)上都有詳細(xì)的文檔和API介紹,下載的Demo中也有常用的方法的示例代碼,這里主要介紹uEditor和django集成需要修改的地方。

這里下載任意一個(gè)版本的都可以,因?yàn)槲覀冎恍枰殃P(guān)于ueEditor前端部分的抽取出來,至于后端服務(wù)器的,我們自己開發(fā)實(shí)現(xiàn)。

其實(shí),uEditord的絕大部分功能在django中都是可用的,只有上傳文件、圖片、視頻、在線圖片、在線文件這一部分和上傳有關(guān)系的部分不好用,因?yàn)檫@些功能需要后臺(tái)處理程序的支持才可以,所以,我們自己要做的,就是用python實(shí)現(xiàn)這部分的處理邏輯。

uEditor與后臺(tái)交互的邏輯:

1.編輯器初始化時(shí),異步請求后臺(tái)處理頁面,處理程序應(yīng)該返回一套json格式的配置信息,請求地址攜帶的參數(shù)為action=config

2.點(diǎn)擊圖片上傳按鈕,異步請求后臺(tái)處理頁面,請求地址攜帶參數(shù)為action=uploadimage

3.點(diǎn)擊視頻上傳按鈕,異步請求后臺(tái)處理頁面,請求地址攜帶參數(shù)為action=uploadvideo

4.點(diǎn)擊附件上傳按鈕,異步請求后臺(tái)處理頁面,請求地址攜帶參數(shù)為action=uploadfile

5.點(diǎn)擊多圖上傳中的在線圖片選項(xiàng)卡,異步請求后臺(tái)處理頁面,請求地址攜帶參數(shù)為action=listimage

6.點(diǎn)擊附件上傳的在線文件選項(xiàng)卡,異步請求后臺(tái)處理頁面,請求地址攜帶參數(shù)為action=listfile

7.點(diǎn)擊涂鴉按鈕后,異步請求后臺(tái)處理頁面,請求地址攜帶參數(shù)為action=uploadscrawl

我們要實(shí)現(xiàn)的就是,根據(jù)每次請求的不同參數(shù)值,調(diào)用不同的方法進(jìn)行處理,如下圖所示,controller根據(jù)參數(shù)值,調(diào)用對應(yīng)的處理程序進(jìn)行處理:


處理邏輯其實(shí)很簡單,就是將Request請求中的文件內(nèi)容讀取并寫入到服務(wù)器上,然后構(gòu)造特定的json返回值。

上傳文件、圖片、視頻時(shí),json格式如下:

{
 "url": "20140703491416521462.png", 
 "state": "SUCCESS", 
 "error": "null", 
 "original": "20140703491416521462.png", 
 "title": "20140703491416521462.png"
}

其中,url是文件在服務(wù)器的相對地址,這個(gè)地址會(huì)和json配置信息中的”xxxUrlPrefix”的值拼在一起,顯示出來。

state是狀態(tài)信息,成功的返回信息固定為SUCCESS,異常情況可自己定義。

error:異常信息,正常的話,為null

original:內(nèi)部文件名,一般和titile相同。

title:文件名稱。

在線文件、在線圖片,json格式如下:

{
 "state": "SUCCESS",
 "list": [
  {
   "url": "upload/image/20140627/6353948647502438222009315.png"
  },
  {
   "url": "upload/image/20140627/6353948659383617789875352.png"
  },
  {
   "url": "upload/image/20140701/6353980733328090063690725.png"
  },
  {
   "url": "upload/image/20140701/6353980745691597223366891.png"
  },
  {
   "url": "upload/image/20140701/6353980747586705613811538.png"
  },
  {
   "url": "upload/image/20140701/6353980823509548151892908.png"
  }
 ],
 "start": 0,
 "size": 20,
 "total": 6
}

其中,start,是標(biāo)志從第幾張圖片開始,個(gè)人感覺意義不大。

size:默認(rèn)顯示多少個(gè)文件、圖片。

total:圖片、文件總數(shù)量。

list:以數(shù)組形式列出圖片、文件的相對地址。

這里,我實(shí)現(xiàn)了一個(gè)簡單demo,可以實(shí)現(xiàn)文件、圖片、視頻的上傳及在線圖片、在線文件的功能。點(diǎn)擊 這里 下載代碼源碼。

目前支持功能: 

基本文字、排版等功能

圖片上傳、文件上傳、視頻上傳功能

在線文件、在線圖片功能

未實(shí)現(xiàn)功能:

涂鴉功能

網(wǎng)絡(luò)圖片功能

功能已在CentOS下,部署到nginx下,實(shí)測,可用。

使用方法: -----

1. 下載這里的完整代碼,直接cd到根目錄,運(yùn)行

python manage.py runserver 1989

,可直接查看效果演示。

2. 在urls.py中將uEditor所在目錄配置成靜態(tài)文件路徑,本demo中為UE

( r'^UE/(?P<path>.*)$','django.views.static.serve', { 'document_root':os.path.dirname(__file__).replace('\\','/')+"/UE"}),

3. 將demo中ueconfig.json文件拷貝到自己項(xiàng)目的根目錄中,并修改其中幾處關(guān)鍵位置:

將"imageUrlPrefix": "/upload/images/"修改為自己項(xiàng)目中圖片上傳后保存的位置,demo中是/upload/images/這個(gè)目錄   

 將"scrawlUrlPrefix": "/upload/images/", 修改為自己項(xiàng)目中涂鴉    

"snapscreenUrlPrefix": "/upload/images/", 截圖保存位置    

"catcherUrlPrefix": "/upload/images/", 網(wǎng)絡(luò)圖片保存位置    

"videoUrlPrefix": "/upload/vedio/"   視頻文件保存地址   

 "fileUrlPrefix": "/upload/files/" 附件保存地址    

"imageManagerUrlPrefix": "/upload/onlineimages/", 在線圖片所在位置,在線圖片實(shí)際就是服務(wù)器為用戶提供的可選圖片   

 "fileManagerUrlPrefix": "/upload/onlinefiles/"  在線附件所在位置,在線附件實(shí)際就是服務(wù)器為用戶提供的可選附件

4. json文件修改后,要把上面設(shè)置的路徑設(shè)置為靜態(tài)資源目錄,例如demo中全部保存到/upload/的子目錄下,那么在urls.py中配置如下:

( r'^upload/(?P<path>.*)$', 'django.views.static.serve',{ 'document_root': (os.path.dirname(__file__)+"/upload").replace('\\','/') }),

之后,確保子目錄是存在的,為了方便,程序里沒有自動(dòng)創(chuàng)建目錄的方法,需要手工創(chuàng)建,例如demo中創(chuàng)建了images、vedio、 files、onlinefiles、onlineimages幾個(gè)子目錄

5. 將demo中的controller.py文件拷貝到項(xiàng)目中任意位置,其實(shí)controller就是一個(gè)異步處理的視圖,拷貝完成后,在urls.py中配置相應(yīng)的路由,demo中放到了根目錄,所以配置如下:

url(r'ueEditorControler','ueEditor_django.controller.handler')

自己的項(xiàng)目中只需要將

ueEditor_django.controller.handler

改為

xxxx.controller.handler

即可

6. 配置工作最后一步,將”ueditor.config.js”文件的

, serverUrl: URL + "/net/controller.ashx"

修改為

, serverUrl: "/ueEditorControler"

即上一步配置的url路由

至此,配置工作完成,剩下的就是到頁面上引用uEditor了,下面是一個(gè)簡單的html頁面,可根據(jù)uEditor放置位置調(diào)整腳本 和樣式的引用路徑

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
 <link rel="stylesheet" type="text/css" href="/UE/third-party/SyntaxHighlighter/shCoreDefault.css" rel="external nofollow" >
<script type="text/javascript" src="/UE/third-party/SyntaxHighlighter/shCore.js"></script>
<script type="text/javascript" charset="utf-8" src="/UE/ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="/UE/ueditor.all.min.js"> </script>
<script type="text/javascript" charset="utf-8" src="/UE/lang/zh-cn/zh-cn.js"></script>

<script type="text/javascript">
 var ue = UE.getEditor('editor');
 SyntaxHighlighter.all();
</script>
</head>
<body>
 <script id="editor" type="text/plain" style="width:auto;height:500px;"></script>
 <input type="button" onclick="" value="保存"/>
</body>
</html>

相關(guān)文章

  • 初步理解Python進(jìn)程的信號(hào)通訊

    初步理解Python進(jìn)程的信號(hào)通訊

    這篇文章主要介紹了初步理解Python進(jìn)程的信號(hào)通訊,作者列舉了Linux系統(tǒng)下的信號(hào)通訊示例,需要的朋友可以參考下
    2015-04-04
  • python操作注冊表的方法實(shí)現(xiàn)

    python操作注冊表的方法實(shí)現(xiàn)

    Python提供了winreg模塊,可以用于操作Windows注冊表,本文就來介紹一下python操作注冊表的方法實(shí)現(xiàn),主要包括打開注冊表、讀取注冊表值、寫入注冊表值和關(guān)閉注冊表,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08
  • python解析json實(shí)例方法

    python解析json實(shí)例方法

    這篇文章主要介紹了python解析json數(shù)據(jù)的小實(shí)例,代碼簡單實(shí)用,大家參考使用吧
    2013-11-11
  • python如何實(shí)現(xiàn)數(shù)據(jù)的線性擬合

    python如何實(shí)現(xiàn)數(shù)據(jù)的線性擬合

    這篇文章主要為大家詳細(xì)介紹了python如何實(shí)現(xiàn)數(shù)據(jù)的線性擬合,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • python實(shí)現(xiàn)合并多個(gè)list及合并多個(gè)django QuerySet的方法示例

    python實(shí)現(xiàn)合并多個(gè)list及合并多個(gè)django QuerySet的方法示例

    這篇文章主要介紹了python實(shí)現(xiàn)合并多個(gè)list及合并多個(gè)django QuerySet的方法,結(jié)合實(shí)例形式分析了Python使用chain合并多個(gè)list以及合并Django中多個(gè)QuerySet的相關(guān)操作技巧,需要的朋友可以參考下
    2019-06-06
  • Python學(xué)習(xí)之基礎(chǔ)語法介紹

    Python學(xué)習(xí)之基礎(chǔ)語法介紹

    大家好,本篇文章主要講的是Python學(xué)習(xí)之基礎(chǔ)語法介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • 只用50行Python代碼爬取網(wǎng)絡(luò)美女高清圖片

    只用50行Python代碼爬取網(wǎng)絡(luò)美女高清圖片

    第一次寫文章,技術(shù)不成熟之處望各位大神輕噴,今天教大家只用50行Python代碼爬取網(wǎng)絡(luò)美女圖片是怎么操作的,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python的小伙伴們很有幫助哦,需要的朋友可以參考下
    2021-06-06
  • Python獲取百度熱搜的完整代碼

    Python獲取百度熱搜的完整代碼

    這篇文章主要介紹了Python獲取百度熱搜的完整代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Python進(jìn)階之全面解讀高級(jí)特性之切片

    Python進(jìn)階之全面解讀高級(jí)特性之切片

    切片的作用就是截取序列對象,然而,對于非序列對象,我們是否有辦法做到切片操作呢?在使用切片的過程中,有什么要點(diǎn)值得重視,又有什么底層原理值得關(guān)注呢?本文將主要跟大家一起來探討這些內(nèi)容
    2019-02-02
  • python連接PostgreSQL過程解析

    python連接PostgreSQL過程解析

    這篇文章主要介紹了python連接PostgreSQL過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02

最新評(píng)論

邻水| 陈巴尔虎旗| 淮南市| 股票| 修文县| 普定县| 重庆市| 建水县| 怀化市| 浏阳市| 兖州市| 宁乡县| 交城县| 浪卡子县| 鸡西市| 兖州市| 阿合奇县| 合水县| 安陆市| 康平县| 柞水县| 瑞昌市| 苗栗县| 阆中市| 浙江省| 民和| 郸城县| 马公市| 曲沃县| 林芝县| 司法| 宜丰县| 和静县| 奉化市| 津市市| 清徐县| 长葛市| 普宁市| 临潭县| 黄大仙区| 保德县|