我的网站搭建 (第十天) Ueditor编辑器

news/2024/5/21 6:03:04/文章来源:https://blog.csdn.net/weixin_34088583/article/details/91927257

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

    之前说过,我的网站编辑器一开始是tinymce,然后才用的ckeditor。可是最近我发现,ckeditor的小图标不是很美观,看久了有点low的样子。我是不是应该换一个编辑器呢,一想到这里,马上打开谷歌搜索有没有更加美观的富文本编辑器。翻了几页,才发现百度Ueditor编辑器就很不错,其实之前我就了解过,但是并没有学习去怎么使用,这回好了,换个富文本编辑器顺便把Ueditor给学会了

安装及使用

1.Ueditor其实对python2和python3有一定的区别,在写程序时想通过Django的form表单顺便把评论框也改成Ueditor,但是没有将其实现却发现了错误提示为:

from widgets import UEditorWidget,AdminUEditorWidget 
ImportError: No module named ‘widgets’

    经查发现,DjangoUeditor是基于Python 2.7的,对Python3的支持有问题。导致widgets.py文件出错,不能import,解决方法可以修改widgets.py或者采用网上修改好的版本DjangoUeditor3,github就有很多Ueditor的代码,有些不能直接使用,可能太久没更新了吧,然后才找到了:https://github.com/twz915/DjangoUeditor3

2.使用git下载后,输入如下命令将源码安装到Python路径中

python3 setup.py install

3.将DjangooUeditor添加到Django的INSTALLED_APPS中,并在settings下添加

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

4.在带有wsgi.py文件的文件夹中的urls.py注意添加

urlpatterns = [url(r'^ueditor/',include('DjangoUeditor.urls' )),
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

5.在blog下的models.py文件导入

from DjangoUeditor.models import UEditorField# 将之前ckeditor
body = RichTextUploadingField()# 改为
body =  UEditorField(u'内容',width=1100, height=300, toolbars="full", imagePath="images/", filePath="files/", upload_settings={"imageMaxSize":1204000},)

6.进入admin后台管理页面,可以看到这时编辑器已经换了个装

7.去掉百度编辑器 ueditor 元素路径、字数统计等,在百度编辑器 ueditor 根目录下: ueditor.config.js 文件中,搜索并将参数elementPathEnabled设置成false即可  
    常用功能开关如下:
    ①,elementPathEnabled : false  //是否启用元素路径,默认是true显示
    ②,wordCount:false          //是否开启字数统计
    ③,autoHeightEnabled:false  // 编辑器内容,是否自动长高,默认true
    ④,fullscreen : false //是否开启初始化时即全屏,默认关闭

8.图标对比

    ckeditor是这样的

    ueditor是这样的

代码高亮

1.为了这个代码高亮可是浪费了我不少时间,一开始是发现在DjangoUeditor/staticueditor/thirdd-party/SyntaxHighlighter文件夹中有shCoreDefault.css和shCore.js这两个文件的,网上也有很多文章说了可以在详情页添加下面三个标签

<script type="text/javascript" src="ueditor/third-party/SyntaxHighlighter/shCore.js"></script>
<link rel="stylesheet" href="ueditor/third-party/SyntaxHighlighter/shCoreDefault.css">
<script type="text/javascript">SyntaxHighlighter.all();
</script>

    运行完后,发现的确有些效果,可是伴随着还有另外三个问题

    一个是代码之间的行距和字体太小,不便于代码的阅读,通过对网页元素进行分析,我找到了shCoreDefault.css文件中的两个属性,通过文件搜索找出来将它们注释就可以解决了

line-height: 1.1em!important;
font-size: 13px!important;

    如果说上面的问题还能接收,第二个问题就完全不适应了,那就是行号与代码不匹配,经常在代码的两头空出多行是没有注明行号的,看着很不习惯(后补:将ueditor/third-party/SyntaxHighlighter/shCoreDefault.css里面的vertical-align:baseline!important;屏蔽掉就好了)

    还有第三个问题,代码过长的情况下,不能自动换行,就导致代码块容易超出父容器宽度。网上的解决办法都是在shCoreDefault.css文件中通过ctrl+F查找:.syntaxhighlighter{,然后在括弧中加入样式:word-break:break-all,要想让css自动换行,white-space必须为normal,已经测试过了,但是第二个问题实在能力有限,无法解决,被迫放弃使用DjangoUeditor中的css样式(现在已经解决)

2.放弃DjangoUeditor的自带样式后,又找到了第二条路,那就是使用Hlightjs,我想要的是类似github上的那种白色背景的代码高亮显示,幸运的是Hlightjs插件提供了太多太多的代码样式。我参考的文章地址:https://blog.csdn.net/msllws/article/details/81048390

3.在官网https://highlightjs.org/download/下载好Hlightjs插件后,与之前使用SyntaxHighlighter类似,添加下面三个标签

<!-- foundation.css文件就是我选择的代码样式 -->
<link rel="stylesheet" type="text/css" href="{% static 'blog/css/foundation.css' %}">
<script type="text/javascript" src="{% static 'blog/js/highlight.pack.js' %}"></script>
<script>hljs.initHighlightingOnLoad();</script>

    这个时候,还无法正常显示,因为代码高亮遵循的格式是:<pre><code>代码</code></pre>而百度编辑器默认的代码块显示格式为:<pre>代码</pre>,所以还需要再写上一个script,添加在body下面

<script type="text/javascript">var allpre = document.getElementsByTagName("pre");for(i = 0; i < allpre.length; i++){var onepre = document.getElementsByTagName("pre")[i];var mycode = document.getElementsByTagName("pre")[i].innerHTML;onepre.innerHTML = '<code id="mycode">'+mycode+'</code>';}
</script>

    这个时候已经能看出代码样式发生改变了,但是没有行号,所以还要给代码加上行号,先创建一个code.css文件,里面包含了code代码块行号的样式效果

pre {position: relative;padding: 0;/*margin-bottom: 24px;*/border-radius: 3px;border: 1px solid #C3CCD0;background: #FFF;overflow: hidden;font-size: 14px;
}
code {display: block;padding: 18px 24px;overflow-y: auto;font-weight: 300;font-family: Menlo, monospace;font-size: 14px;
}code.has-numbering {margin-left: 30px;
}.pre-numbering {position: absolute;top: 0;left: 0;width: 30px;padding: 8px 5px 5px 0;border-right: 1px solid #C3CCD0;border-radius: 3px 0 0 3px;background-color: #f5f5f5;text-align: right;font-family: Menlo, monospace;font-size: 14px;color: #8c8c8c;
}

    将上面的行号样式通过javascript绑定到每个li元素上

<script type="text/javascript">$(function(){$('pre code').each(function(){var lines = $(this).text().split('\n').length - 1;var $numbering = $('<ul/>').addClass('pre-numbering');$(this).addClass('has-numbering').parent().append($numbering);for(i=1;i<=lines+100;i++){$numbering.append($('<li/>').text(i));}});});
</script>

    完成后,就已经实现Ueditor+Hightjs的代码高亮了

4.代码高亮对比
       Ckeditor是这样的

     Ueditor是这样的

其他常见问题

1.此时可能还会出现编辑框内图片无法正常缩放,是因为页面上引入了Bootstrap,而Bootstrap默认将box-sizing样式统一设成border-box了,在ueditor.min.css中加入如下代码,就算是填坑成功

.edui-container *{-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}
.edui-container *:before,.edui-container *:after {-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}

2.在css中可能出现长串字母或者数字不会自动换行的问题,在对应css中加:

word-break: break-all;

3.因为在编辑文章的时候,上传图片的宽度是用px来表示的,这就有可能导致图片宽度超出父容器宽度,所以需要重新对img元素进行宽度重定义

#post-body img{max-width: 100%;
}

4.在编辑超链接内容时可以发现,在移动端或者宽度很窄的显示屏上,a标签元素也常常超出容器宽度之外,这是因为ueditor对长字母或者长数字不会自动换行导致的,所以需要设置自动换行

#post-body a{word-break: break-all;
}

5.用过ueditor的人都知道,还有一个常见问题就是在编辑器下使用的表格可以被预览,但是内容发布之后,在网页显示中是看不见边框的。网上很多人大都提议取修改ueditor.all.js或者ueditor.all.min.js,但是我按照那个方法行不通,不知道是哪里还出了错,所以我就直接用最粗暴的方式,在详情页中的样式加上

#post-body table, #post-body tr, #post-body td{border: 1px solid #000;max-width: 100%;
}

    最后,实在没想到换个富文本编辑器会弄出这么多问题,学习之路,最难也是最让人愉悦的,也只有学习才是生活

转载于:https://my.oschina.net/zhenfei/blog/1935099

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_742862.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何屏蔽网站发起favicon.ico的请求

2019独角兽企业重金招聘Python工程师标准>>> favicon.ico 图标用于收藏夹图标和浏览器标签上的显示&#xff0c;如果不设置&#xff0c;浏览器会请求网站根目录的这个图标&#xff0c;如果网站根目录也没有这图标会产生 404。更有甚者&#xff0c;比如我司&#xff…

关于资源类网站我就只服这4个,每一个都能让你大开眼界!

对于经常从事互联网行业的工作者来说&#xff0c;储藏一些资源网站是必备的&#xff0c;方便我们随时将网上的资源一扫而进。今天小编给大家推荐4个实用性超强的资源网站&#xff01;GrowthTools 在线极客工具大全GrowthTools是一个帮助网络工作者收集实用工具的网站&#xff0…

Java Web架构篇之浅谈大型网站分布式架构

大型网站技术架构概述 图片摘自&#xff1a; 大型网站技术架构&#xff1a;摘要与读书笔记 更多&#xff1a; 《大型网站技术架构》——第一章 大型网站架构演化 架构模式 分层&#xff1a;横向切分 – 应用层、服务层、数据层分割&#xff1a;纵向切分 – 业务切分分布式&a…

对公司网站DNS解析异常的排查与处理

这周可谓是屋漏连夜雨&#xff0c;先是nfs挂载出现问题&#xff0c;紧接着住处的厕所堵了&#xff0c;然后又是今天的域名解析异常导致服务访问返回404。 我们的域名是解析到两个IP&#xff0c;分别是电信跟网通。 异常情景&#xff1a; 用户打开页面登录后图片上传跟显示出现异…

分享一个定制生成前端配置文件的网站

网址https://webpack.jakoblind.no/ 这个网站可以根据需要&#xff0c;基于webpack4下定制配置文件&#xff0c;无需理解webpack架构的细节 网页分三个部分&#xff1a; 选择配置&#xff1a;选择您所需要安装的内容可视化配置&#xff1a;根据上图所选的内容&#xff0c;显示所…

javaweb:在线聊天网站

前言&#xff1a; 最近学了一堆网页相关的内容&#xff0c;html,js,jquery,javaweb,servlet,websocket等东西&#xff0c;所以就试着集合起来写个简单的网页&#xff0c;于是就决定就是你了&#xff1a;在线聊天网站。 而且还写了3个版本。。。 版本1&#xff1a;全是用的js…

零基础搭建PHP本地环境并安装WordPress网站(图文指导)

搭建PHP本地环境前言 以前在大学课堂上学过一点JAVA, PHP. 因为那时是零基础&#xff0c;需要自己搭建APACH, MYSQL, PHPADMIN过程挺烦的&#xff0c;本地环境都不知道是啥&#xff0c;但是做出来结果却很高兴。出来后也做过网站&#xff0c;但是很久不弄就忘记了&#xff0c;我…

javaweb:在线聊天网站(框架版)

之前写过一次在线聊天网站&#xff0c;不过那次是无框架版的&#xff0c;这次用框架构建网站&#xff0c;基本功能和上次差不多 涉及知识 java spring&#xff08;4.3.5&#xff09;&#xff1a;spring、spring MVC hibernate bootstrap jsp JavaScript&#xff0c;jquer…

利用TortoiseGit(小乌龟)将项目上传至GitHub网站

2019独角兽企业重金招聘Python工程师标准>>> 准备 1.拥有一个GitHub账户2.安装了TortoiseGit&#xff08;小乌龟&#xff09;具体过程 一、在GitHub上建立新的仓库 起好仓库名&#xff0c;填好描述&#xff0c;在Add .gitgnore中选择Java&#xff08;根据你自己需求…

一些缩短树莓派学习曲线的书籍、课程和网站

2019独角兽企业重金招聘Python工程师标准>>> 树莓派是一款小型单板计算机&#xff0c;最初用于教学和学习编程和计算机科学。但如今它有更多用处。它是一种经济的低功耗计算机&#xff0c;人们将它用于各种各样的事情 —— 从家庭娱乐到服务器应用&#xff0c;再到物…

大型分布式网站架构实战项目分析

2019独角兽企业重金招聘Python工程师标准>>> 大型分布式网站架构实战项目分析 转载于:https://my.oschina.net/u/1168056/blog/1802675

zblog mysql数据库无法连接_ZBlog博客网站错误:MySQL数据库无法连接

前言前天搭建的博客网站&#xff0c;睡醒一觉起来网站挂逼了&#xff0c;其间无任何操作。主页都进不去&#xff0c;提示“MySQL数据库无法连接”&#xff0c;无论怎么刷新重启服务器都没用。最终从中午1点搞到凌晨2点&#xff0c;皇天不负有心人终于解决了。其实问题很简单&am…

.net core Asp.net Mvc Ef 网站搭建 vs2017 1)

1&#xff09;开发环境搭建 首先下载安装vs2017 地址 &#xff1a;https://www.visualstudio.com/zh-hans/downloads/ 安装勾选几项如下图 ,注意点在单个组件时.net core 运行时一定要勾上,很多人都没勾结果新增不了.net core 项目 2&#xff09;开发 1.新增.net core mvc …

LAMP架构部署和动态网站环境的配置

实验环境&#xff1a;操作系统&#xff1a;centos 7.5服务器IP&#xff1a;192.168.10.5运行用户&#xff1a;root连接工具&#xff1a;xshell工具web环境&#xff1a;Linuxapachephpmariadb&#xff08;LAMP架构&#xff09;大型动态应用系统平台主要是针对于大流量、高并发网…

我的博客网站开发5——博文正文页

为实现页面间的统一性和开发时代码的工作量&#xff0c;我们将页面相同的布局做成母版页&#xff0c;变化的内容在内容页进行变化。如下图&#xff1a; 这样&#xff0c;我们在写博文的显示全文页面时&#xff0c;我们只需在新增页面引用母版页就可实现&#xff0c;页面相同页面…

建立个人网站需要学习哪些知识?学习的顺序是什么?

首先&#xff0c;做个人的网站&#xff0c;不是写笔记那么肯定是为了我展示给别人看。 想要把自己写的网站展示给互联网&#xff0c;就要把代码部署到服务器&#xff0c;如果按照正常的流程&#xff0c;就要首先登陆百度云&#xff0c;阿里云什么的&#xff0c;购买服务器&…

Chrome 不想让 HTTPS 网站通过 HTTP 下载文件

开发四年只会写业务代码&#xff0c;分布式高并发都不会还做程序员&#xff1f; >>> 你是否经历过访问的明明是一个 HTTPS 网站&#xff0c;但是有时候站内下载东西使用的协议却是 HTTP&#xff0c;这其实存在安全隐患&#xff0c;现在 Chrome 不想让这样的事情发生…

Google也来凑热闹-网站导航

网站导航这个已经在国内做烂掉的东西&#xff0c;最近大鳄级别的Google也来凑热闹了&#xff0d;Google网站导航&#xff0c;据他们自己说&#xff1a; 在推这款产品之初&#xff0c;我们做了大量的调研&#xff0c;。。。我们发现还有大量的另一类用户&#xff0c;我们在帮助…

网站数据安全防护的八大要诀

不管是网络还是终端&#xff0c;信息安全问题始终是人们所最为关心的问题&#xff0c;所以当人们的数据中心正走向网络的时候&#xff0c;人们的安全防护也必须紧跟这个脚步。 1、认证和口令管理 这主要是一种一次性的活动而且仅仅是作为项目的一部分而完成的。有人可能会问一…