校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Django集成富文本編輯器summernote的實現步驟

Django集成富文本編輯器summernote的實現步驟

熱門標簽:市場上的電銷機器人 地圖標注面積 北瀚ai電銷機器人官網手機版 儋州電話機器人 朝陽手機外呼系統 佛山400電話辦理 北京電銷外呼系統加盟 小蘇云呼電話機器人 所得系統電梯怎樣主板設置外呼

提到Django的富文本編輯器,大家一定會想到ckeditor和tinyMCE。其實還是有一個富文本編輯器同樣優秀,它就是summernote,個人認為功能上不遜于ckeditor,比tinyMCE更強大。Summernote 是一個簡單靈活的所見即所得的 HTML 富文本編輯器,基于 jQuery 和 Bootstrap 構建,支持圖片上傳,提供了大量可定制的選項。

展示效果如下所示:

第一步 安裝django-summernote

首先通過pip安裝django-summernote,建議安裝在Django項目所在的虛擬環境里。如果你要上傳圖片,還需要安裝pillow這個圖片庫。

pip install django-summernote
pip install pillow # 上傳圖片時需要

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

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

然后將django_summernote.urls 加入到項目的 urls.py

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

如果你需要上傳圖片,還需要在settings.py中設置MEDIA相關選項,如下所示。如果你Django的版本是3.x的,你還需設置X_FRAME_OPTIONS選項。

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

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

如果你在本地開發測試環境debug=True, 你還需要使用django自帶static靜態文件服務器才能正確顯示上傳的圖片。修改項目的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自帶管理后臺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)

展示效果如下所示:

表單中使用

如果你使用普通表單,只需要設置富文本顯示字段的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, 請使用
class PostForm(forms.Form):
    content = forms.CharField(widget=SummernoteInplaceWidget())

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

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

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

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

第三步 測試效果

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

第四步 常規配置

常用設置選項如下所示,可以滿足大部分項目需求,可以直接copy使用。

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

        # 語言設置
        'lang': None,

        # 工具欄圖標
        # 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的實現步驟的詳細內容,更多關于Django集成富文本編輯器summernote的資料請關注腳本之家其它相關文章!

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

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

巨人網絡通訊聲明:本文標題《Django集成富文本編輯器summernote的實現步驟》,本文關鍵詞  Django,集成,富,文本,編輯器,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Django集成富文本編輯器summernote的實現步驟》相關的同類信息!
  • 本頁收集關于Django集成富文本編輯器summernote的實現步驟的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    韩国理伦片一区二区三区在线播放| www.欧美色图| 国产精品久久久久久久裸模 | 91国偷自产一区二区三区观看| 色8久久人人97超碰香蕉987| 欧美mv日韩mv国产网站| 欧美一级视频精品观看| 在线不卡免费av| 国产精品毛片大码女人| 亚洲国产婷婷综合在线精品| 久久国产精品露脸对白| 成人高清免费观看| 91精品国产色综合久久不卡电影| 久久综合久久综合久久综合| 中文字幕在线观看不卡| 日韩电影在线观看一区| gogogo免费视频观看亚洲一| 欧美一区二区三区在线看| 精品sm捆绑视频| 国产精品久久久久久久久免费丝袜| 一区二区三区美女视频| 国产suv一区二区三区88区| 欧美三级在线看| 国产精品家庭影院| 成人一级片网址| 久久久国产精华| 美日韩一区二区三区| 在线播放欧美女士性生活| 国产精品久久久久久亚洲伦| 捆绑调教一区二区三区| 欧美在线一二三| 亚洲成av人片在www色猫咪| 99精品久久免费看蜜臀剧情介绍| 精品国产伦一区二区三区观看体验| 一区二区欧美视频| 欧美日韩精品一区二区三区蜜桃| 亚洲天堂网中文字| av电影在线观看一区| 亚洲欧美成人一区二区三区| av激情综合网| 亚洲风情在线资源站| 欧美伊人久久久久久久久影院 | 蜜桃在线一区二区三区| 7777精品久久久大香线蕉| 视频一区在线播放| 日韩美女天天操| 豆国产96在线|亚洲| 久久久久久久综合| 不卡的电影网站| 一区二区三区影院| 日韩免费看的电影| 91免费看片在线观看| 日韩综合在线视频| 国产精品人成在线观看免费| 色综合一个色综合亚洲| 久久国产精品99精品国产| 欧美激情一区二区三区全黄| 91国偷自产一区二区三区观看| 日本亚洲欧美天堂免费| 中文字幕在线不卡视频| 欧美成人精品1314www| 99re这里只有精品6| 激情欧美一区二区三区在线观看| 国产精品久久久久7777按摩| 欧美精选午夜久久久乱码6080| 国产成人综合在线观看| 日本少妇一区二区| 一区二区三区精品视频| 国产精品女同一区二区三区| 日韩你懂的在线播放| 欧美日韩一卡二卡三卡| gogogo免费视频观看亚洲一| 国产一区二区三区在线看麻豆| 亚洲www啪成人一区二区麻豆| 国产精品污污网站在线观看| 91精品国产欧美日韩| 欧美区视频在线观看| 欧美在线免费播放| 91麻豆免费观看| 99精品视频一区二区| 成人av在线电影| 不卡av在线网| 欧美在线一区二区| 欧美日韩国产系列| 日韩欧美国产综合| 久久久激情视频| 亚洲天堂中文字幕| 亚洲成人av资源| 韩国成人在线视频| 国产精品99久久久久久似苏梦涵| 国产中文一区二区三区| 国产激情偷乱视频一区二区三区| 国产精品18久久久久久久网站| 国产精品一区在线观看乱码| 国产寡妇亲子伦一区二区| 成人国产精品免费网站| 欧美日韩国产123区| 久久综合九色综合97婷婷| 中文字幕在线一区| 性感美女久久精品| 国产mv日韩mv欧美| 欧洲精品在线观看| 国产欧美一区二区三区鸳鸯浴 | 91欧美一区二区| 欧美精品第1页| 国产精品国产三级国产专播品爱网| 一区二区三区在线高清| 国产乱码精品一区二区三区忘忧草 | 欧美视频一区二区三区四区 | 色婷婷av一区二区三区软件| 日韩一区国产二区欧美三区| 国产精品久久久久久亚洲毛片| 日韩高清中文字幕一区| 成人黄色在线看| 久久先锋影音av鲁色资源网| 亚洲国产综合91精品麻豆| 成a人片亚洲日本久久| 精品国产伦一区二区三区免费| 亚洲电影你懂得| 在线亚洲免费视频| 亚洲美女精品一区| 91美女在线看| 成人免费一区二区三区视频 | 久久婷婷国产综合国色天香 | 欧美日韩精品二区第二页| 亚洲精品伦理在线| 日韩亚洲欧美综合| 日韩主播视频在线| 欧美xxxxxxxx| 激情深爱一区二区| 国产精品女人毛片| 91网页版在线| 亚洲一区二区三区四区在线免费观看 | av电影一区二区| 亚洲愉拍自拍另类高清精品| 欧美亚洲动漫另类| 秋霞电影一区二区| 精品国产伦一区二区三区观看方式 | 国产伦精一区二区三区| 欧美精品日韩精品| 国产凹凸在线观看一区二区| 国产欧美日韩综合| 不卡视频一二三四| 日韩成人精品视频| 欧美国产丝袜视频| 欧美美女网站色| 国产在线国偷精品产拍免费yy| 国产亚洲一区二区三区四区| 成人综合在线网站| 亚洲第一主播视频| 中文字幕乱码久久午夜不卡| 色悠久久久久综合欧美99| 成人av电影在线网| 亚洲一线二线三线视频| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 精品国精品国产| 一本色道久久综合精品竹菊| 亚洲成人动漫在线观看| 久久九九国产精品| 日韩一级视频免费观看在线| 99国产精品久久久久久久久久| 亚洲美女少妇撒尿| 欧美无砖专区一中文字| 北条麻妃国产九九精品视频| 激情综合色综合久久| 奇米精品一区二区三区在线观看一| 中文字幕av一区二区三区| 日韩欧美亚洲另类制服综合在线| 欧美视频一区二| 欧美日韩免费不卡视频一区二区三区| 99视频精品免费视频| 99re视频精品| 91精品综合久久久久久| 欧美一级理论片| 久久久精品国产免大香伊| 久久久亚洲精华液精华液精华液 | 日韩中文字幕区一区有砖一区| 亚洲午夜久久久久久久久电影网 | 欧美日韩卡一卡二| 91精品国产色综合久久ai换脸| 欧美色偷偷大香| 久久综合丝袜日本网| 国产精品久久久久久一区二区三区| 国产日产欧美一区| 亚洲成人激情自拍| 国产在线视频一区二区三区| 成人精品一区二区三区四区 | av中文字幕不卡| 欧美一区二区三区婷婷月色 | 不卡视频一二三| 3atv一区二区三区| 亚洲天堂精品在线观看| 五月开心婷婷久久| 成人污视频在线观看| 欧美日本一区二区在线观看| 精品久久国产老人久久综合| 亚洲综合精品自拍| 国产91高潮流白浆在线麻豆 | 日韩av在线免费观看不卡| 懂色av中文字幕一区二区三区|