个人博客开发之xadmin与ueditor集成

项目源码下载:http://download.vhosts.cn

1. xadmin 添加ueditor 插件

vim extra_apps\xadmin\plugins\ueditor.py #没有改文件,就新建文件

#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = ‘cpy‘
import xadmin
from xadmin.views import BaseAdminPlugin, CreateAdminView, ModelFormAdminView, UpdateAdminView
from DjangoUeditor.models import UEditorField
from DjangoUeditor.widgets import UEditorWidget
from django.conf import settings
class XadminUEditorWidget(UEditorWidget):
    def __init__(self, **kwargs):
        self.ueditor_options = kwargs
        self.Media.js = None
        super(XadminUEditorWidget, self).__init__(kwargs)
class UeditorPlugin(BaseAdminPlugin):
    def get_field_style(self, attrs, db_field, style, **kwargs):
        if style == ‘ueditor‘:
            if isinstance(db_field, UEditorField):
                widget = db_field.formfield().widget
                param = {}
                param.update(widget.ueditor_settings)
                param.update(widget.attrs)
                return {‘widget‘: XadminUEditorWidget(**param)}
        return attrs
    def block_extrahead(self, context, nodes):
        js = ‘<script type="text/javascript" src="%s"></script>‘ % (
            settings.STATIC_URL + "ueditor/ueditor.config.js")  #DjangoUeditor静态文件
        js += ‘<script type="text/javascript" src="%s"></script>‘ % (
            settings.STATIC_URL + "ueditor/ueditor.all.js")  #DjangoUeditor静态文件
        nodes.append(js)
xadmin.site.register_plugin(UeditorPlugin, UpdateAdminView)
xadmin.site.register_plugin(UeditorPlugin, CreateAdminView)

  

# 此处特别说明下settings.STATIC_URL  和 STATICFILES_DIRS 对应的项目文件位置:

 

STATIC_URL 指向的是所有注册过的app 中的指定目录,针对对象为app

例如 settings.STATIC_URL配置为:

STATIC_URL = ‘/static/‘ # 则表示:http://xxxxxx/static 链接指向所有app下 static 目录,DjangoUeditor app也是项目中的注册app ,所以此处extra_apps\DjangoUeditor\static 目录可以直接被STATIC_URL 识别。

STATICFILES_DIRS 指向的是项目通用静态资源,一般不在app中,而是在项目根目录下。

例如 setting.STATICFILES_DIRS = [ os.path.join(BASE_DIR, ‘static‘),] 则指向项目根目录下static文件夹,页面模板中{% load staticfiles %} 就是表示引用项目根目录下static文件夹,所以可以直接输入去除static 目录以上部分的路径,模板仍然可以识别。

  

2. 添加注册 ueditor 模块

vim extra_apps\xadmin\plugins\__init__.py # 添加刚刚新增的ueditor

3.  添加视频播放样式、代码高亮样式 和相应js 文件

在模板文件中引入

<!-- 引入视频html标签识别,支持视频播放 -->
<script src="{% static ‘ueditor/third-party/video-js/video.js‘ %}"></script>
<script src="{% static ‘ueditor/ueditor.parse.js‘ %}"></script>
<!-- 引用ueditor js ,保障前台页面代码高亮 -->
<script src="{% static ‘ueditor/third-party/SyntaxHighlighter/shCore.js‘ %}"></script>
<!-- 引入视频html标签识别,支持视频播放 -->
<link type="text/css" rel="stylesheet" href="{% static ‘ueditor/third-party/video-js/video-js.css‘ %}"/>
<!-- ueditor css 样式,用于前台代码高亮 -->
<link type="text/css" rel="stylesheet" href="{% static ‘ueditor/third-party/SyntaxHighlighter/shCoreDefault.css‘ %}">

  

  4. 修改ueditor 上传视频文件的位置:

djangoueditor 默认保存文件只提供了imagePath 和filePath的保存位置。所以此处将ueditor保存文件的views 做如下修改

 4.1 修改UploadFile(request) 函数,在检测完成后写入文件时,在保存文件的函数中传入action

4.2  修改保存文件函数,判断传来的action参数是否为视频内容,如果是,将默认路径改为media\video

4.3 修改UploadFile(request) 函数, 将action == ‘uploadvideo‘ 的视频保存完成后返回路径加入video 目录:

原文地址:https://www.cnblogs.com/cpy-devops/p/10368375.html

时间: 2024-10-29 12:20:10

个人博客开发之xadmin与ueditor集成的相关文章

个人博客开发之xadmin 布局和后台样式

项目源码下载:http://download.vhosts.cn 一. xadmin 后台配置注册信息 1. 在apps 的blogs 和 users 两个app中添加adminx.py文件 vim apps\users\adminx.py #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'cpy' import xadmin from .models import EmailVerifyRecode, UserProfile

51博客开博啦

哈哈,今天心情不错.感觉51博客比CSDN的好用很多啊,果断放弃CSDN作为我主要的阵地. 51博客开博啦,布布扣,bubuko.com

博客开园,感谢博客园

日子一天天过,舒适悠闲的今天或许意味着危机将在明天滋生. 转眼,毕业已经将要十五年了,珍贵的时光,我驻足回首,貌似平淡,无奇,两手空空! 日前,突然感觉压力山大,想对自己有一点要求,寻找一个新的平台.然而对于技术出身,木讷少语的我能拿出的却只有过时的Delphi开发语言. Delphi日薄西山,就业机会也寥寥无几,仿佛外边的公司也想趁火打劫,薪水给的极低. 为了跳槽,也是为了下半生自己的独一无二.见证就从博客园开始吧.

博客开园

今天开通了博客园,记录成长点滴--

Liferay7 BPM门户开发之35: AssetTag的集成查询

Tag是liferay中的Asset特性,可以用来对信息进行分类,在iferay中的Asset类型为: 1. Web Content(自定义内容) 2. Documents and Media(文档库和媒体文件) 3. Blogs (博客文章) 4. Message Boards 5. Wiki Page 6. Bookmarks 可以根据tagName来对信息进行归类统计,演示代码: //查询Tag的数量(符合tagName=‘news’) ThemeDisplay themeDisplay

基于Laravel开发博客应用系列 —— 使用Bower+Gulp集成前端资源

本节我们将讨论如何将前端资源集成到项目中,包括前端资源的发布和引入.本项目将使用 Bower 和 Gulp 下载和集成jQuery.Bootstrap.Font Awesome 以及 DataTables. 1.“偷”别人的代码 开发 web 应用最快的方式就是借鉴别人的项目.换句话说,“偷”他们的代码. 当然,不是真偷. 举个例子吧,Twitter Bootstrap 的许可证声明允许任何人可以免费使用 Bootstrap 框架. 现在的 web 站点包含很多东西:框架.库.前端资源,等等.如

博客开更!!

好颓啊!!  做题好慢!! 各种错误!! 1014: [JSOI2008]火星人prefix 额 splay没啥说的 字符串hash蒟蒻不会啊 搞半天才懂 好玄学啊 unsigned的自然溢出也是玄学啊 (话说我 int的自然溢出也A了smg?? 1 #include <cstdio> 2 #include <iostream> 3 #include <algorithm> 4 #include <cstring> 5 using namespace std

【程序人生】写博客一周年纪——横空出世

前言 “吾日三省吾身”,<论语>如是说:“我是靠总结经验吃饭的”,毛主席如是说:“做人要像竹子一样,每攀登一步,就做一次小结”,名人亦如是说.可见,总结对于人生的成长有着多么重要的作用.我等凡人做不到曾子“日三省”,但一年总结一次还是可以办到的.从去年的6月份开始正式写博客,到现在不知不觉已经一年了,正好6月又是一个大考月,也是对过去一个阶段的学业总结,这里就对过去一年写博客的经历做一些总结吧. 一.为什么要写博客 至于我写博客的初衷,这和我工作经历和面试经历有关.这里我想简单回忆一下过去7年

Android应用开发-小巫CSDN博客客户端之集成友盟社会化分享组件

Android应用开发-小巫CSDN博客客户端之集成友盟社会化分享组件 上一篇博客给大家介绍了如何分析网页并且使用jsoup这个库对html代码进行解析,本篇博客继续给大家介绍如何集成友盟社会化组件,如何使用SDK提供的API轻松实现多平台的社会化分享,官网的文档和Demo看起来很头疼的有木有,小巫在集成这个社会化的组件也有点烦躁,所以也需要各位耐心看下面的博文把友盟社会化组件集成到你的应用中去.为什么要选择友盟呢,这里也是答应了小喵的,要帮忙集成他们的服务,所以也顺带帮他们写一篇这样的博文,千