django admin后台接入tinymce并且支持图片上传

首先:下载tinymce

地址是https://www.tinymce.com/

点击download

下载社区版本即可

接着:把压缩包内tinymce目录内的所有文件和文件夹复制到Django项目中static/js目录内:

然后编辑admin文件

class BlogAdmin(admin.ModelAdmin):
    list_display = ("title", "author", "category", "public_time", "votes")
    search_fields = ("title", "author", "category")
    list_filter = ("public_time", "votes")
    ordering = ("-public_time",)

    class Media:
        js = (
            ‘/static/js/jquery-3.2.1.min.js‘,
            ‘/static/js/tinymce/js/tinymce/tinymce.min.js‘,
            ‘/static/js/tinymce/js/tinymce/jquery.tinymce.min.js‘,
            ‘/static/js/tinymce/js/tinymce/textareas.js‘
        )
admin.site.register(Blog, BlogAdmin)
 

紧接着在/static/js/tinymce/js/tinymce目录下新建一个textareas.js文件

tinymce.init({
    selector: "textarea",
    theme: "modern",
    plugins: ["image"],
    image_advtab: true,
    paste_data_images: true,
    file_browser_callback: function(field_name, url, type, win){
        if(type==‘image‘){
            $(‘#my_form input‘).click();
        };
    },
})

$( document ).ready(function() {
h =‘<iframe id="form_target" name="form_target" style="display:none"></iframe><form id="my_form" action="/uploadImg/" target="form_target" method="post" enctype="multipart/form-data" style="width:0px;height:0;overflow:hidden"><input name="img" type="file" onchange="$(\‘#my_form\‘).submit();this.value=\‘\‘;"></form>‘;
$(‘body‘).append(h);
function getCookie(name) {
var cookieValue = null;
if (document.cookie && document.cookie != ‘‘) {
var cookies = document.cookie.split(‘;‘);
for (var i = 0; i < cookies.length; i++) {
var cookie = jQuery.trim(cookies[i]);
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) == (name + ‘=‘)) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
var csrftoken = getCookie(‘csrftoken‘);
$(‘#my_form‘).append(‘<input type="hidden" name="csrfmiddlewaretoken" value=‘+csrftoken+‘ />‘);
});

此时已经集成了tinymce编辑器了,但是文件上传功能还没结束

现在要创建一个model用来存放文件,一个url和视图函数来处理图片上传,以及在setting中配置

先一个个来,首先配置setting中的MEDIA_ROOT

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

接着编辑models文件

class BlogPic(models.Model):
    filename = models.CharField(max_length=200, blank=True, null=True)
    img = models.ImageField(upload_to=‘./media‘)

python manage.py makemigrations

python manage.py migrate

建立对应的数据库

然后就是urls文件,添加上传文件url

from blog.views import uploadImg

urlpatterns = [
    url(r‘uploadImg‘, uploadImg, name=‘uploadImg‘),
    url(r‘^media/(?P<path>.*)$‘, serve, {‘document_root‘: MEDIA_ROOT}),
]

最后编辑views视图函数

def uploadImg(request):
    img = request.FILES.get(‘img‘)
    adminImg = BlogPic()
    adminImg.filename = img.name
    adminImg.img = img
    adminImg.save()
    return HttpResponse("<script>top.$(‘.mce-btn.mce-open‘).parent().find(‘.mce-textbox‘).val(‘/media/%s‘)"
                        ".closest(‘.mce-window‘).find(‘.mce-primary‘).click();</script>" %adminImg.img)

完成这些步骤之后就已经集成了tinymce,并且支持图片上传了

参考文献

http://blog.csdn.net/hjxzt1/article/details/78073596

http://blog.csdn.net/hjxzt1/article/details/78068972

原文地址:https://www.cnblogs.com/lgh344902118/p/8378021.html

时间: 2024-08-11 09:56:52

django admin后台接入tinymce并且支持图片上传的相关文章

[py][mx]django添加后台课程机构页数据-图片上传设置

分析下课程页前台部分 机构类别-目前机构库中没有这个字段,需要追加下 所在地区 xadmin可以手动添加 课程机构 涉及到机构封面图, 即图片上传media设置, 也需要在xadmin里手动添加几条 用xadmin添加数据 所在地区添加 课程机构添加 补充机构类别在model里的字段 class CourseOrg(models.Model): catagory = models.CharField(max_length=20, default="pxjg", choices=((&q

django之创建第10-1个项目-图片上传并记录上传时间

1.百度云盘:django之创建第10-1个项目-图片上传并记录上传时间 2.主要修改的配置文件有3个,forms.views和models3个文件以及html 3.forms.py文件修改 #coding:utf-8 #这里定义html页面中用到的表单,常和views和models文件配合使用 """ >>> help(django) Help on package django: PACKAGE CONTENTS conf (package) contr

【Servlet】利用Servlet3.0标准与JSTL表达式实现文件上传系统,支持图片上传后显示

伴随着JDK1.6一起出现的Servlet3.0标准,使得JSP的文件上传系统不再艰难,此前在JSP的文件上传系统需要<[Jsp]使用jspsmartupload完成简单的文件上传系统>(点击打开链接)类似这样的插件才能完成的文件上传系统,还不支持中文,使得各位程序猿掏空心思才能解决这个问题.现在Servlet3.0对文件上传的方法进行封装,无须分块就可以实现.而且Servlet3.0还不用类似<[Servlet]最简单的Servlet JavaWeb程序>(点击打开链接)在web

包含修改字体,图片上传等功能的文本输入框-Bootstrap

通过jQuery Bootstrap小插件,框任何一个div转换变成一个富文本编辑框,主要特色: 在Mac和window平台下自动针对常用操作绑定热键 可以拖拽插入图片,支持图片上传(也可以获取移动设备上的照片) 依赖于浏览器标准,没有标准代码:工具条和键盘均可定制,并且能够执行任何浏览器支持的命令 首先看一下效果: 接下来,上代码: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta c

使用百度UMeditor富文本编辑器,修改自定义图片上传,修改源码

富文本编辑器,不多说了,这个大家应该都用到过,至于用到的什么版本,那就分很多种 CKEditor:很早以前叫FCK,那个时候也用过,现在改名了,比较流行的一个插件,国外很多公司在用 UEDITOR:百度开发的插件,lite版是UM EasyUI编辑器:用easyUI的都懂,基本上肯定用到 其他的富文本编辑器就不说了,前两个小编我用的比较多 本来我是比较倾向于CKEditor,但是这个插件不支持图片上传,图片功能只能链接过去,而不能在控件本身中上传,所以就选择了UMeditor 为啥选择UM,不选

Django(十九)文件上传:图片上传(后台上传、自定义上传)、

一.基本设置 参考:https://docs.djangoproject.com/zh-hans/3.0/topics/http/file-uploads/ 1)配置project1/settings.py 因为图片也属于静态文件,所以保存到static目录下. MEDIA_ROOT=os.path.join(BASE_DIR,"static/media") 2)在static目录下创建media目录,再创建应用名称的目录,此例为app1 F:\Test\django-demo\pro

Django Admin后台添加用户时出现报错:1452

如果在使用Django Admin后台添加用户时出现报错: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`mxproject`.`django_admin_log`, CONSTRAINT `django_admin_log_user_id_c564eba6_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id

Django Admin Cookbook-14如何在Django Admin后台移除“删除所选”操作

14.如何在Django Admin后台移除"删除所选"操作? 默认情况下,Django Admin后台的listview模型列表页,会有一个Delete Selected删除所选操作.假设你需要再从Hero管理模型中移除该删除操作. ModelAdmin.get_actions方法可以返回所有的操作方法.通过覆盖此方法,移除其中delete_selected方法,便可可以从下拉列表中删除它.将Hero管理模型的代码修改如下: def get_actions(self, request

Django Admin Cookbook-38如何获取特定对象的Django Admin后台URL

38.如何获取特定对象的Django Admin后台URL? Hero模型有一个children字段,显示每个英雄的孩子的名字.你被要求将每个childrin链接到Hero模型更改页面.实现如下: @admin.register(Hero) class HeroAdmin(admin.ModelAdmin, ExportCsvMixin): ... def children_display(self, obj): display_text = ", ".join([ "<