婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識(shí)庫 > Django集成富文本編輯器summernote的實(shí)現(xiàn)步驟

Django集成富文本編輯器summernote的實(shí)現(xiàn)步驟

熱門標(biāo)簽:市場上的電銷機(jī)器人 地圖標(biāo)注面積 北瀚ai電銷機(jī)器人官網(wǎng)手機(jī)版 儋州電話機(jī)器人 朝陽手機(jī)外呼系統(tǒng) 佛山400電話辦理 北京電銷外呼系統(tǒng)加盟 小蘇云呼電話機(jī)器人 所得系統(tǒng)電梯怎樣主板設(shè)置外呼

提到Django的富文本編輯器,大家一定會(huì)想到ckeditor和tinyMCE。其實(shí)還是有一個(gè)富文本編輯器同樣優(yōu)秀,它就是summernote,個(gè)人認(rèn)為功能上不遜于ckeditor,比tinyMCE更強(qiáng)大。Summernote 是一個(gè)簡單靈活的所見即所得的 HTML 富文本編輯器,基于 jQuery 和 Bootstrap 構(gòu)建,支持圖片上傳,提供了大量可定制的選項(xiàng)。

展示效果如下所示:

第一步 安裝django-summernote

首先通過pip安裝django-summernote,建議安裝在Django項(xiàng)目所在的虛擬環(huán)境里。如果你要上傳圖片,還需要安裝pillow這個(gè)圖片庫。

pip install django-summernote
pip install pillow # 上傳圖片時(shí)需要

接著將其加入到INSTALLED_APPS里去,如下所示:

INSTALLED_APPS = [
    ...
    'django_summernote', # 注意下劃線
]

然后將django_summernote.urls 加入到項(xiàng)目的 urls.py

from django.urls import include
# ...
urlpatterns = [
    ...
    path('summernote/', include('django_summernote.urls')),
    ...
]

如果你需要上傳圖片,還需要在settings.py中設(shè)置MEDIA相關(guān)選項(xiàng),如下所示。如果你Django的版本是3.x的,你還需設(shè)置X_FRAME_OPTIONS選項(xiàng)。

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

# Django 3.X用戶還需增加如下配置
X_FRAME_OPTIONS = 'SAMEORIGIN'

如果你在本地開發(fā)測試環(huán)境debug=True, 你還需要使用django自帶static靜態(tài)文件服務(wù)器才能正確顯示上傳的圖片。修改項(xiàng)目的urls.py, 添加如下代碼:

from django.conf import settings
from django.conf.urls.static import static

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

第二步 使用django-summernote

你可以在Django自帶管理后臺(tái)admin中使用django-summernote, 也可以在自己的表單中使用django-summernote。

admin中使用

from django_summernote.admin import SummernoteModelAdmin
from .models import Post

class PostAdmin(SummernoteModelAdmin):
    summernote_fields = ('content',)

admin.site.register(Post, PostAdmin)

展示效果如下所示:

表單中使用

如果你使用普通表單,只需要設(shè)置富文本顯示字段的widget即可,如下所示:

from django_summernote.widgets import SummernoteWidget, SummernoteInplaceWidget

# Apply summernote to specific fields.
class PostForm(forms.Form):
    content = forms.CharField(widget=SummernoteWidget())  # instead of forms.Textarea

# 如果你已使用django-crispy-forms, 請(qǐng)使用
class PostForm(forms.Form):
    content = forms.CharField(widget=SummernoteInplaceWidget())

如果你使用ModelForm, 可以通過如下方式設(shè)置widget。

class PostForm(forms.ModelForm):
    class Meta:
        model = Post
        widgets = {
            'content': SummernoteWidget(),
        }

注意:通過表單提交的內(nèi)容都是帶html標(biāo)簽的,需正確顯示文本,需要使用safe模板標(biāo)簽。

{{ content|safe }}
由于SummernoteWidget對(duì)用戶提交的數(shù)據(jù)不做任何轉(zhuǎn)義,所以存在外部用戶通過表單注入惡意腳本的風(fēng)險(xiǎn),小編并不建議使用。在表單中使用django-summernote更好的方式是使用SummernoteTextFormField和SummernoteTextField,它們會(huì)對(duì)所有有害的標(biāo)簽進(jìn)行轉(zhuǎn)義。使用方式如下所示:

第三步 測試效果

Djangos-summernote不僅可以上傳圖片,還可以嵌入視頻哦,親測成功!

第四步 常規(guī)配置

常用設(shè)置選項(xiàng)如下所示,可以滿足大部分項(xiàng)目需求,可以直接copy使用。

SUMMERNOTE_CONFIG = {
    'iframe': True,
    # 如果你本身已使用Bootstrap/jQuery主題
    # 'iframe': False,
    'summernote': {
        # As an example, using Summernote Air-mode
        'airMode': False,
        
        # 編輯窗口 size
        'width': '100%',
        'height': '450',

        # 語言設(shè)置
        'lang': None,

        # 工具欄圖標(biāo)
        # https://summernote.org/deep-dive/#custom-toolbar-popover
        'toolbar': [
            ['style', ['style',]],
            ['font', ['bold', 'underline', 'clear']],
            ['fontname', ['fontname']],
            ['fontsize', ['fontsize']],
            ['color', ['color']],
            ['para', ['ul', 'ol', 'paragraph']],
            ['table', ['table']],
            ['insert', ['link', 'picture', 'video']],
            ['view', ['redo', 'undo', 'fullscreen', 'codeview',]],
        ],
    },

    # 上傳圖片需要用戶先登錄.
    'attachment_require_authentication': True,

    # Set `upload_to` function for attachments.
    # 'attachment_upload_to': my_custom_upload_to_func(),

    # Set custom storage class for attachments.
    # 'attachment_storage_class': 'my.custom.storage.class.name',
    
    # You can completely disable the attachment feature.
    'disable_attachment': False,
    
    # Set to `True` to return attachment paths in absolute URIs.
    'attachment_absolute_uri': False,
    
    # test_func in summernote upload view. (Allow upload images only when user passes the test)
    # https://docs.djangoproject.com/en/2.2/topics/auth/default/#django.contrib.auth.mixins.UserPassesTestMixin
    # ```
    # def example_test_func(request):
    #     return request.user.groups.filter(name='group_name').exists()
    # ```
    # 'test_func_upload_view': example_test_func,
    
    # 懶加載
    'lazy': True,
}

以上就是Django集成富文本編輯器summernote的實(shí)現(xiàn)步驟的詳細(xì)內(nèi)容,更多關(guān)于Django集成富文本編輯器summernote的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • Django之choices選項(xiàng)和富文本編輯器的使用詳解
  • Django在admin后臺(tái)集成TinyMCE富文本編輯器的例子
  • django富文本編輯器的實(shí)現(xiàn)示例
  • Django添加KindEditor富文本編輯器的使用
  • Django框架使用富文本編輯器Uedit的方法分析
  • django輕松使用富文本編輯器CKEditor的方法
  • Django集成百度富文本編輯器uEditor攻略

標(biāo)簽:酒泉 商丘 定西 寧夏 江蘇 云南 金融催收 龍巖

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Django集成富文本編輯器summernote的實(shí)現(xiàn)步驟》,本文關(guān)鍵詞  Django,集成,富,文本,編輯器,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Django集成富文本編輯器summernote的實(shí)現(xiàn)步驟》相關(guān)的同類信息!
  • 本頁收集關(guān)于Django集成富文本編輯器summernote的實(shí)現(xiàn)步驟的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    福利一区二区在线观看| 久久亚洲春色中文字幕久久久| 国产精品自产自拍| 不卡一区二区三区四区| 精品国产91乱码一区二区三区| 亚洲精品成人在线| 国产v日产∨综合v精品视频| 欧美精品久久99| 亚洲国产精品影院| 欧美色国产精品| 亚洲尤物在线视频观看| 91玉足脚交白嫩脚丫在线播放| 久久综合网色—综合色88| 久久国内精品视频| 在线成人免费视频| 五月婷婷欧美视频| 欧美一区二区精品久久911| 亚洲大尺度视频在线观看| 91蜜桃网址入口| 亚洲已满18点击进入久久| 欧美日韩精品欧美日韩精品一| 亚洲综合图片区| 精品嫩草影院久久| 9久草视频在线视频精品| 亚洲三级在线免费观看| 欧美精品一区二区在线播放| 国产在线精品国自产拍免费| 中文字幕国产一区| 欧美日韩亚洲综合一区| 精品系列免费在线观看| 亚洲午夜羞羞片| 337p粉嫩大胆色噜噜噜噜亚洲| 波多野洁衣一区| 天天色图综合网| 亚洲免费大片在线观看| 久久久精品一品道一区| 欧美视频精品在线| 欧美在线观看视频一区二区| 成人亚洲一区二区一| 国产黄色精品视频| 精品成人a区在线观看| 成人福利视频网站| 狠狠色丁香婷婷综合久久片| 丝袜美腿亚洲色图| 日本在线不卡视频| 亚洲国产成人高清精品| 亚洲国产精品尤物yw在线观看| 国产精品嫩草影院av蜜臀| 欧美电影免费观看高清完整版在 | www.66久久| 欧美伊人久久久久久久久影院| 欧美午夜免费电影| 久久久久久日产精品| 亚洲国产精品成人久久综合一区| 久久午夜免费电影| 国产亚洲成年网址在线观看| 国产一区在线视频| 色伊人久久综合中文字幕| 欧美日韩精品综合在线| 国产欧美一区二区精品婷婷| 亚洲午夜电影在线| 黑人巨大精品欧美一区| 欧美肥妇毛茸茸| 国产精品免费视频一区| 精品中文av资源站在线观看| 色综合网站在线| 久久精品一区二区三区av| 亚洲一区在线观看免费观看电影高清| 蜜臀精品久久久久久蜜臀| 91亚洲永久精品| 一区二区三区在线观看动漫| 成人丝袜高跟foot| 中文在线一区二区| 国产成人免费在线观看| 国产日韩欧美高清在线| 久久激情综合网| 久久久91精品国产一区二区精品| 五月天网站亚洲| 91精品婷婷国产综合久久| 青椒成人免费视频| 在线不卡a资源高清| 精品一区二区久久| 国产欧美一区二区精品秋霞影院| 国产主播一区二区| www精品美女久久久tv| aa级大片欧美| 蜜桃在线一区二区三区| 国产视频一区在线观看 | 美腿丝袜在线亚洲一区| 久久亚洲免费视频| 欧美综合天天夜夜久久| 欧美日韩精品是欧美日韩精品| 亚洲成人综合在线| 日韩美一区二区三区| 99久久免费精品高清特色大片| 一区二区三区日本| 欧美v国产在线一区二区三区| 97久久精品人人澡人人爽| 亚洲一区免费视频| 久久蜜桃av一区二区天堂| 国产mv日韩mv欧美| 亚洲午夜私人影院| 久久天堂av综合合色蜜桃网| 欧美综合天天夜夜久久| 高清久久久久久| 麻豆国产一区二区| 麻豆精品一二三| 亚洲欧美日韩国产手机在线| 欧美变态口味重另类| 91蝌蚪porny成人天涯| 成人高清免费观看| 国产99久久久久| 精品在线观看视频| 国产一区二区剧情av在线| 久久国产精品无码网站| 久久国产精品色| 国产传媒一区在线| 国产成人日日夜夜| 成人久久18免费网站麻豆 | 国产呦萝稀缺另类资源| 久久99国产精品久久99果冻传媒| 亚洲成人一区二区| 免播放器亚洲一区| 麻豆91免费观看| 成人动漫在线一区| 欧美日韩欧美一区二区| 欧美一级二级在线观看| 中文乱码免费一区二区| 亚洲色图欧洲色图| 精品制服美女久久| 欧美变态tickle挠乳网站| 国产aⅴ精品一区二区三区色成熟| 日本一二三不卡| 一区二区三区四区激情| 波多野洁衣一区| 亚洲国产精品一区二区久久| 欧美日韩精品久久久| 日韩在线a电影| 大白屁股一区二区视频| 精品欧美久久久| 国内成人精品2018免费看| 在线免费观看一区| 亚洲视频图片小说| 日日嗨av一区二区三区四区| 国产精品资源网| 菠萝蜜视频在线观看一区| 日韩欧美在线综合网| 亚洲三级免费电影| 91亚洲精品乱码久久久久久蜜桃| jizz一区二区| 亚洲精品国产精华液| 狠狠色综合播放一区二区| 国产日韩欧美制服另类| 婷婷丁香久久五月婷婷| 一本到高清视频免费精品| 国产精品区一区二区三区| 欧美日韩激情一区二区| 国产精品99久久久| 亚洲国产日日夜夜| 久久五月婷婷丁香社区| 精品无人码麻豆乱码1区2区| 欧美日韩国产美女| 亚洲最快最全在线视频| 在线观看av不卡| 国产精品一区二区不卡| 欧美激情中文字幕| 欧美三级午夜理伦三级中视频| 蜜臀av在线播放一区二区三区| 欧美精品一区视频| gogo大胆日本视频一区| 天堂精品中文字幕在线| 欧美午夜精品一区二区三区| 美女视频黄a大片欧美| 中文在线一区二区 | 国产欧美一区二区精品性色| 欧美日韩在线播放三区| 国产91露脸合集magnet| 一区二区三区资源| 日本一区二区三区高清不卡| 日韩欧美中文字幕精品| 7777精品伊人久久久大香线蕉的 | 久久久99精品免费观看不卡| 丁香亚洲综合激情啪啪综合| 国产99久久久国产精品潘金网站| 日韩免费福利电影在线观看| 91亚洲男人天堂| 日本一区二区高清| 色综合激情久久| 亚洲婷婷在线视频| 综合精品久久久| 亚洲综合成人网| 一区二区三区四区乱视频| 国产精品九色蝌蚪自拍| 一区二区在线观看视频| 日韩成人一区二区| 成人午夜私人影院| 欧美精选午夜久久久乱码6080| 制服丝袜国产精品| 久久色中文字幕| 丝袜亚洲精品中文字幕一区|