django2集成DjangoUeditor富文本編輯器

? ? ? ?富文本編輯器,在web開發(fā)中可以說是不可缺少的。django并沒有自帶富文本編輯器,因此我們需要自己集成,在這里推薦大家使用DjangoUeditor,因為DjangoUeditor封裝了我們需要的一些功能如文件上傳、在后臺和前臺一起使用等,非常方便。

一、下載DjangoUeditor:

? ? ? ? 1.python3:?https://github.com/twz915/DjangoUeditor3/?(直接下載zip)

? ? ? ? 2.python2:https://github.com/zhangfisher/DjangoUeditor(直接下載zip,或 pip install?DjangoUeditor)

二、 新建django項目:

? ? ? ? 1. 在項目的根目錄新建extra_apps文件夾并將我們下載好的zip文件解壓打開后找到 DjangoUeditor將DjangoUeditor直接拷貝到我們項目的extra_apps中,如下:

2.在settings.py文件中添加兩行代碼:如下

? sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))

? sys.path.insert(0, os.path.join(BASE_DIR, 'extra_apps'))

?3.通過pycharm 選中extra_apps文件夾點擊鼠標右鍵選中菜單mark directory as 選擇 sources root? ? ? 就可以變成上面的藍色文件夾目錄就可以了。

變成藍色文件夾后就可以在settings.py 的INSTALLED_APPS中引入DjangoUeditor


?4.通過以上三步就將基本的集成工作就完成了,下面就可以開始使用了。

? ? 4.1 在的urls.py中添加ueditor:

? ?4.2 django后臺使用ueditor,在我們的項目中通過django命令(djang-admin startapp blog)創(chuàng)建一? ? ? ? ? 個 app叫blog,注意需要在settings.py的INSTALLED_APPS中添加blog。

?4.3 在blog的model中新建一張表比如叫Article:

引入UEditorField

from DjangoUeditor.modelsimport UEditorField

from django.dbimport models

class Article(models.Model):

title = models.CharField(max_length=100, verbose_name='標題')

content = UEditorField(width=600, height=300, toolbars="full", imagePath="images/", filePath="files/",

? ? ? ? ? ? ? ? ? ? ? ? ? upload_settings={"imageMaxSize":1204000},

? ? ? ? ? ? ? ? ? ? ? ? ? settings={}, verbose_name='內(nèi)容')

create_time = models.DateTimeField(auto_now_add=True, verbose_name='發(fā)表時間')

class Meta:

db_table ='Article'

? ? ? ? verbose_name ='文章'

? ? ? ? verbose_name_plural = verbose_name

在blog的admin.py中添加對表的管理

然后通過python manage.py makemigrations? 和python mamage.py migrate 生成數(shù)據(jù)庫。通過python manage.py createsuperuser 創(chuàng)建一個超級管理員用于登錄后臺。執(zhí)行完命令后就開始運行項目通過python manage.py runserver運行。運行成功后訪問,http://127.0.0.1:8000/admin/用自己創(chuàng)建的管理員帳號登錄后臺進去后效果如下:

?點擊文章添加文章,就可以看到編輯器已經(jīng)加載出來了

但是,發(fā)現(xiàn)上傳圖片是有問題的,如何解決,其實很簡單,只需要在settings.py文件中添加靜態(tài)文件路徑即可

MEDIA_URL ='/media/'

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

這個路徑的名稱可以自由命名這里就直接使用media

在urls中配置還需要配置一下靜態(tài)路徑才能顯示圖片如下:

if settings.DEBUG:

media_root = os.path.join(settings.BASE_DIR, settings.MEDIA_ROOT)

urlpatterns += static(settings.MEDIA_URL, document_root=media_root)

配置好后刷新界面,再次上傳圖片,就可以正常顯示了


這樣django在admin中就可以使用DjangoUeditor了,那么在前端也需要怎么用呢?,其實也很簡單,django是可以自定義field的,DjangoUeditor已為我們定義好了,使用forms就可以了。

三、前端使用DjangoUeditor

1. 在項目的templates中新建html文件模版(如:index.html)

2.在blog的view.py中添加一個函數(shù)

def index(request):

return render(request, 'index.html')

3.在urls.py中配置路由

path('', views.index),

訪問?http://127.0.0.1:8000/看看模版是否正常加載,正常加載之后就進入下一步。

4.在views.py中定義編輯器的form

class TestUEditorForm(forms.Form):

content = UEditorField('內(nèi)容', width=600, height=300, toolbars="full", imagePath="images/", filePath="files/",

? ? ? ? ? ? ? ? ? ? ? ? ? upload_settings={"imageMaxSize":1204000},

? ? ? ? ? ? ? ? ? ? ? ? ? settings={})

配置好后,當我們運行項目后發(fā)現(xiàn)出錯了,心情不美麗了。

說是forms出錯了,咋辦,我們有源碼就好辦,這也就是為什么要使用源碼集成的原因。

根據(jù)提示對源碼進行修改,找到django2_DjangoUeditor/extra_apps/DjangoUeditor/forms.py

我們發(fā)現(xiàn)就是這里報錯了

修改為

再次運行項目我們發(fā)現(xiàn)就ok了接下來我們需要在html中使用編輯器

刷新界面后,我們要的編輯器就出現(xiàn)了

補充:有的小伙伴不知道在前端使用怎么在編輯器里填充值,這里說一下我的辦法,我是直接通過js注入,代碼如下

<script>

document.getElementById("id_content").value= '{{ article.content|safe }}'

</script>

id是你編輯器的id,value為你的要填充的內(nèi)容

四、總結(jié):

在此,本文的內(nèi)容就介紹完了,這也是我最近做項目使用到了DjangoUeditor,對DjangoUeditor使用進行總結(jié)記錄,有什么問題歡迎指正。如果喜歡我的文章歡迎關(guān)注我,一起學習,一起成長。

源碼下載:?https://github.com/juzhizhang/django2_DjangoUeditor

博客園地址: 猿哥愛碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容