电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

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

瀏覽:5日期:2024-09-05 11:21:29
目錄第一步 安裝django-summernote第二步 使用django-summernote第三步 測試效果第四步 常規配置

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

展示效果如下所示:

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

第一步 安裝django-summernote

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

pip install django-summernotepip 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 settingsfrom django.conf.urls.static import staticif 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 SummernoteModelAdminfrom .models import Postclass PostAdmin(SummernoteModelAdmin): summernote_fields = (’content’,)admin.site.register(Post, PostAdmin)

展示效果如下所示:

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

表單中使用

如果你使用普通表單,只需要設置富文本顯示字段的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 = Postwidgets = { ’content’: SummernoteWidget(),}

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

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

第三步 測試效果

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

Django集成富文本編輯器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
相關文章:
主站蜘蛛池模板: 警方提醒:赣州约炮论坛真的安全吗?2025年新手必看的网络交友防坑指南 | 电抗器-能曼电气-电抗器专业制造商| 英语词典_成语词典_日语词典_法语词典_在线词典网 | 数显恒温油浴-电砂浴-高温油浴振荡器-常州迈科诺仪器有限公司 | 减速机电机一体机_带电机减速器一套_德国BOSERL电动机与减速箱生产厂家 | 防水套管-柔性防水套管-刚性防水套管-上海执品管件有限公司 | 知企服务-企业综合服务(ZiKeys.com)-品优低价、种类齐全、过程管理透明、速度快捷高效、放心服务,知企专家! | 有福网(yofus.com)洗照片冲印,毕业聚会纪念册相册制作个性DIY平台 | 砂石生产线_石料生产线设备_制砂生产线设备价格_生产厂家-河南中誉鼎力智能装备有限公司 | 包装机传感器-搅拌站传感器-山东称重传感器厂家-济南泰钦电气 | 卡诺亚轻高定官网_卧室系统_整家定制_定制家居_高端定制_全屋定制加盟_定制家具加盟_定制衣柜加盟 | 北京翻译公司-专业合同翻译-医学标书翻译收费标准-慕迪灵 | 不锈钢发酵罐_水果酒发酵罐_谷物发酵罐_山东誉诚不锈钢制品有限公司 | 六维力传感器_六分量力传感器_模腔压力传感器-南京数智微传感科技有限公司 | 依维柯自动挡房车,自行式国产改装房车,小型房车价格,中国十大房车品牌_南京拓锐斯特房车 - 南京拓锐斯特房车 | 紫外可见光分光度计-紫外分光度计-分光光度仪-屹谱仪器制造(上海)有限公司 | 伺服电机_直流伺服_交流伺服_DD马达_拓达官方网站 | 汽车水泵_汽车水泵厂家-瑞安市骏迪汽车配件有限公司 | 机械加工_绞车配件_立式离心机_减速机-洛阳三永机械厂 | 重庆轻质隔墙板-重庆安吉升科技有限公司 | 板材品牌-中国胶合板行业十大品牌-环保板材-上海声达板材 | 沉降天平_沉降粒度仪_液体比重仪-上海方瑞仪器有限公司 | 执业药师报名条件,考试时间,考试真题,报名入口—首页 | 蒸汽吸附分析仪-进口水分活度仪|康宝百科 | 高压贴片电容|贴片安规电容|三端滤波器|风华电容代理南京南山 | 天津仓库出租网-天津电商仓库-天津云仓一件代发-【博程云仓】 | 仿真茅草_人造茅草瓦价格_仿真茅草厂家_仿真茅草供应-深圳市科佰工贸有限公司 | 学生作文网_中小学生作文大全与写作指导| 智能汉显全自动量热仪_微机全自动胶质层指数测定仪-鹤壁市科达仪器仪表有限公司 | 苗木价格-苗木批发-沭阳苗木基地-沭阳花木-长之鸿园林苗木场 | 净水器代理,净水器招商,净水器加盟-FineSky德国法兹全屋净水 | 电力测功机,电涡流测功机,磁粉制动器,南通远辰曳引机测试台 | 北京印刷厂_北京印刷_北京印刷公司_北京印刷厂家_北京东爵盛世印刷有限公司 | 河北码上网络科技|邯郸小程序开发|邯郸微信开发|邯郸网站建设 | 台式低速离心机-脱泡离心机-菌种摇床-常州市万丰仪器制造有限公司 | 温州富欧金属封头-不锈钢封头厂家| 深圳快餐店设计-餐饮设计公司-餐饮空间品牌全案设计-深圳市勤蜂装饰工程 | PC构件-PC预制构件-构件设计-建筑预制构件-PC构件厂-锦萧新材料科技(浙江)股份有限公司 | 深圳市索富通实业有限公司-可燃气体报警器 | 可燃气体探测器 | 气体检测仪 | 智能电表|预付费ic卡水电表|nb智能无线远传载波电表-福建百悦信息科技有限公司 | 真空干燥烘箱_鼓风干燥箱 _高低温恒温恒湿试验箱_光照二氧化碳恒温培养箱-上海航佩仪器 |