问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Django项目后台admin富文本KindEditor教程0基础

发布网友 发布时间:2024-10-01 10:16

我来回答

1个回答

热心网友 时间:2024-10-30 02:07

?由于Django开发过程中,发现对于博客类的文章前端显示不友好,所以想在后台集成一个富文本编辑器,这样就可以轻松的解决前台页面显示没有格式的问题,给你一个漂亮的、可以编辑格式的前端页面。

在引入富文本的过程中遇到了不少问题,也查了不少博客和相关资料,但是还是有些问题是网上的内容没办法解决的,最后还是通过自己动手实践、反复尝试才解决的,过程比较疼苦,我现在写这个教程就是从0基础开始的,真正动手完成,调试成功的,如果你完全按照我的教程没有解决的话,可以留言、或者私信联系我。

好了,我们先看一下,我们需要什么环境、工具或插件:\ win7+python3.5+pycharm+Django1.11.X+KindEditor

这里简单介绍一下老牛X的KindEditor?\ ??KindEditor 是一套开源的在线HTML编辑器,主要用于让用户在网站上获得所见即所得编辑效果,开发人员可以用 KindEditor 把传统的多行文本输入框(textarea)替换为可视化的富文本输入框。 KindEditor 使用 JavaScript 编写,可以无缝地与 Java、.NET、PHP、ASP 等程序集成,比较适合在 CMS、商城、论坛、博客、Wiki、电子邮件等互联网应用上使用。

读到这里我默认大家win7+python3.5+pycharm+Django1.11.X这些都是齐全的,只是缺少了KindEditor,好现在我们来下载一下:\ http://kindeditor.net/down.php

第一步:将KindEditor放置到项目中的正确目录\ 1、下载完成后,解压,然后删除掉没有用的文件和目录,只保留图中的内容:

\ 3、在kindeditor目录下新建一个config.js文件,内容如下:

KindEditor.ready(function?(k)?{????window.editor?=?k.create('#id_profile',{????????resizeType:1,????????allowPreviewEmoticons?:?false,????????allowImageRemote?:?false,????????uploadJson?:?'/upload/kindeditor',????????width:'800px',????????height:'400px',????});})

\ \ 第二步:Django的项目配置文件修改\ 1、现在我们来配置一下Django的静态文件上传目录,如果已经配置了,也最好保证和我一致,防止出现问题。我们打开setting.py文件,添加如下图中的内容:

STATIC_URL?=?'/static/'STATICFILES_DIRS?=?[os.path.join(BASE_DIR,?'static'),]

\ 现在我们继续在setting.py文件中设置一下MEDIA_URL和MEDIA_ROOT参数,这个作用和上面的static参数作用是类似的,也是通过携带MEDIA_URL的URL来访问映射的MEDIA_ROOT目录,具体配置如下:

#?media媒体目录配置,根据系统自动选择/或\MEDIA_URL?=?'/uploads/'import?platformprint(platform.system())if(platform.system()=='Windows'):????print('Windows系统')????MEDIA_ROOT?=?os.path.join(BASE_DIR,?"static\media")elif(platform.system()=='Linux'):????print('Linux系统')????MEDIA_ROOT?=?os.path.join(BASE_DIR,?"static/media")else:????print('其他')

\ 我们添加2个url的路由到文件中,如图:

from?django.conf?import?settingsfrom?django.contrib?import?adminfrom?rango?import?viewsfrom?django.views.static?import?serveurlpatterns?=?[????url(r'^admin/',?admin.site.urls),????url(r'^uploads/(?P<path>.*)$',?serve,?{'document_root':?settings.MEDIA_ROOT,?}),????url(r'^upload/(?P<dir_name>[^/]+)$',?views.upload_image,?name='upload_image'),]

第三步:应用配置文件和开发文件修改\ 1、在自己的应用中view.py中添加如下代码(这个是网上找的,稍后我会贴下链接)

#?配置KindEditor富文本编辑器上传图片目录from?django.conf?import?settingsfrom?django.views.decorators.csrf?import?csrf_exemptimport?osimport?uuidimport?jsonimport?datetime?as?dt@csrf_exemptdef?upload_image(request,?dir_name):????result?=?{"error":?1,?"message":?"上传出错"}????files?=?request.FILES.get("imgFile",?None)????if?files:????????result?=?image_upload(files,?dir_name)????return?HttpResponse(json.mps(result),?content_type="application/json")#?目录创建def?upload_generation_dir(dir_name):????today?=?dt.datetime.today()????dir_name?=?dir_name?+?'/%d/%d/'?%?(today.year,?today.month)????if?not?os.path.exists(settings.MEDIA_ROOT?+?dir_name):????????os.makedirs(settings.MEDIA_ROOT?+?dir_name)????return?dir_name#?图片上传def?image_upload(files,?dir_name):????#?允许上传文件类型????allow_suffix?=?['jpg',?'png',?'jpeg',?'gif',????????????????????'bmp',?'zip',?"swf",?"flv",????????????????????"mp3",?"wav",?"wma",?"wmv",????????????????????"mid",?"avi",?"mpg",?"asf",????????????????????"rm",?"rmvb",?"doc",?"docx",????????????????????"xls",?"xlsx",?"ppt",?"htm",????????????????????"html",?"txt",?"zip",?"rar",????????????????????"gz",?"bz2"]????file_suffix?=?files.name.split(".")[-1]????if?file_suffix?not?in?allow_suffix:????????return?{"error":?1,?"message":?"图片格式不正确"}????relative_path_file?=?upload_generation_dir(dir_name)????path?=?os.path.join(settings.MEDIA_ROOT,?relative_path_file)????if?not?os.path.exists(path):??#?如果目录不存在创建目录????????os.makedirs(path)????file_name?=?str(uuid.uuid1())?+?"."?+?file_suffix????path_file?=?os.path.join(path,?file_name)????file_url?=?settings.MEDIA_URL?+?relative_path_file?+?file_name????open(path_file,?'wb').write(files.file.read())

2、应用中view.py同级目录下我们找到models.py,打开,我们创建Category表对应的数据模型类

from?django.db?import?models#?Create?your?models?here.class?Category(models.Model):????name?=?models.CharField(max_length=128,?unique=True)????profile?=?models.TextField("个人博客",?blank=True)????def?__str__(self):????????return?self.name

\ \ 3、现在我们需要做的最后一个配置就是在后台admin.py中注册我们在上一步创建的模型类,我们首先在view.py和models.py的同级\ 目录中找到admin.py,打开后注册前面创建的Category模型类,再导入KindEditor中的js,如下操作即可:

from?django.contrib?import?adminfrom?rango.models?import?Category,?Page#?Register?your?models?here.@admin.register(Category)class?CategoryAdmin(admin.ModelAdmin):????list_display?=?['name']????class?Media:????????def?__init__(self):????????????pass????????js?=?(????????????'/static/js/kindeditor/kindeditor-all.js',????????????'/static/js/kindeditor/lang/zh_CN.js',????????????'/static/js/kindeditor/config.js',????????)

\ 这里我测试输入字符,各种格式,还有上传图片功能,都是OK的\ 注意:\ 这里需要注意的是好多人都发现图片没有办法上传,老是提示找不到 /upload/kindeditor,那么请仔细检查前面的setting.py和\ urls.py的配置,务必和我的保持一致,再重新调试,应该就可以了。

第五步:总结\ 让我们来概况的总结一下,我们的配置流程:\ 1、下载kindeditor,copy到我们的项目静态文件目录中,并创建config.js文件,输入固定内容(直接复制代码)\ 2、配置项目setting.py文件,新增static静态上传目录对应url和项目中映射的目录参数,在static目录下新增url对应url和\ 项目中映射的目录参数(直接复制代码)\ 3、配置项目urls.py文件,新增了2行正则表达式路由(直接复制代码),来分别映射上传media的根目录和上传文件的方法\ 4、配置应用中view.py文件(直接复制代码)、models.py中新建模型类(直接复制代码)、admin.py文件中注册模型类并引入\ kindeditor的js文件\ 5、启动项目,访问调试,至此就全部结束了,看在博主这么细致的调教(不对,是讲解。),大家一定记得留个赞呦!

附录:\ 1、如果你按照教程都做完了,反复检查了,都没有问题,可以评论留言,或者私信我\ 2、这个文章也参照了其他博主的文章,这里留下原链接,大家可以没事去踩踩\ https://blog.csdn.net/longshelan_113/article/details/80687583

原文:https://juejin.cn/post/7095550778772815886

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎么设置我想要的铃声为闹钟呢? 定时机器人功能列表 ...暗黑破坏神2重制版好玩吗_暗黑破坏神2重制版怎么玩 怎么用ATMA导入装备? 我下载的暗黑存档是rar文件,怎么办 知学云(北京)科技股份有限公司电话是多少? 仓央嘉措有哪些描写心情的诗? 沙面街道现状 龙之谷2手游学者课堂怎么玩 龙之谷2学者课堂答案是什么_学者课堂答案大全 2010年6月5日21点哪里地震了 2012年6月12日21点40分左右哪个地方地震了 华硕笔记本电脑的风扇怎样控制转速? 不用电不用油的水泵 大学生一定要参加“三下乡”活动吗? 大学生暑期三下乡活动的意义何在 标杆管理的作用包括哪些 家庭装暖气什么样的好 什么样的家庭装暖气好 我这个电脑配置能不能玩吃鸡?反正玩GTA5不卡 这配置带的动尼尔机械纪元,lol,吃鸡,gta5这些吗 桌面1060显卡玩游戏怎么样,我比较喜欢吃鸡,使命召唤,GTA5之类的 梦幻诛仙手游柳潇潇厉害吗 梦幻诛仙手游小号金币怎么给大号 诛仙手游55级平民怎么么上60,70w道法的 在男朋友店里上班工资合同怎么写? 微信发朋友圈怎么设置部分朋友可见? 我被老板辞退,请问我该怎么保护我的合法权益? 沈阳工程学院物流系专升本的一年学费大概是多少 沈阳工程学院专升本计算机专业的学费是多少 金蝶软件中如何创建出库单和入库单? 2010年6月5日21点 地震了吗? 2015年8月31日晚上21点56分哪呢地震 2014年10月7日21点50分在什么地方发生地震 黄冈6月30日发地震了是晚上21点20分左右 康宁大猩猩第七代手机有哪些(小米8康宁大猩猩几代) 光绪被投毒元凶 我医保卡上有工商银行账号,为什么在工商银行卡里查不到余额,也查不到... 王者荣耀程咬金出装 极限逃生还能满血实战打法 王者荣耀S13程咬金怎么出装 装备及铭文搭配解析 S9赛季坦克的天下 王者荣耀程咬金出装和铭文搭配 王者荣耀陈咬金图鉴_程咬金属性技能铭文推荐 美国要求字节跳动剥离TikTok事件全过程梳理!损失最大的竟然是Ta!_百度... TikTok 联合用户反对美霸道法案 究竟是买诺基亚N98 还是魅族M9 还是iphone4 好? 希望有很详细且具实际... 身上莫名其妙的长了很多很多很痒的小红点,是过敏?可能是因为什么? 中学生该买什么款的手机好 腿上红点痒的很,不知道是什么?好几个药膏搽了没效果 经常失眠煲什么汤哪些少年时得了抑郁药考上了大学 如何用数字示波器调出方波信号? 如何注册物业公司