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
django admin后台接入tinymce并且支持图片上传的更多相关文章
- [py][mx]django添加后台课程机构页数据-图片上传设置
分析下课程页前台部分 机构类别-目前机构库中没有这个字段,需要追加下 所在地区 xadmin可以手动添加 课程机构 涉及到机构封面图, 即图片上传media设置, 也需要在xadmin里手动添加几条 ...
- django之创建第10个项目-图片上传方式1
1.upload.HTMl <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang=& ...
- django之创建第10-1个项目-图片上传并记录上传时间
1.百度云盘:django之创建第10-1个项目-图片上传并记录上传时间 2.主要修改的配置文件有3个,forms.views和models3个文件以及html 3.forms.py文件修改 #cod ...
- 自定Tinymce中的图片上传
在引入组件上添加 上传图片的url地址 <tinymce :height="300" ref="tinymce" //上传图片的url地址 upload- ...
- 支持图片上传预览的 uploadPreview.js 插件
原文链接:http://www.lanrenzhijia.com/others/3148.html
- Thinkphp5+plupload图片上传功能,支持实时预览图片。
今天和大家分享一个国外的图片上传插件,这个插件支持分片上传大文件.其中著名的七牛云平台的jssdk就使用了puupload插件,可见这个插件还是相当牛叉的. 这个插件不仅仅支持图片上传,还支持大多数文 ...
- 原生JS实现异步图片上传(预览)
效果 实现过程分为两步 1. 用户点击添加后通过 H5文件读取 FileReader对象以DataURL的格式读取图片 2. 通过FormData对象生成表单数据,通过ajax上传到后台 HTML & ...
- input type=file实现图片上传,预览以及图片删除
背景 前两天在做一个PC网站的意见反馈,其中涉及到了图片上传功能,要求可以上传多张图片,并且支持图片上传预览及图片删除, 图片上传这一块以前没怎么搞过,而且一般也很少会碰到这样的需求,所以在做这个功能 ...
- ckeditor富文本编辑器的使用和图片上传,复制粘贴图片上传
自动导入Word图片,或者粘贴Word内容时自动上传所有的图片,并且最终保留Word样式,这应该是Web编辑器里面最基本的一个需求功能了.一般情况下我们将Word内容粘贴到Web编辑器(富文本编辑器) ...
随机推荐
- HDU 2829 Lawrence(斜率优化DP O(n^2))
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2829 题目大意:有一段铁路有n个站,每个站可以往其他站运送粮草,现在要炸掉m条路使得粮草补给最小,粮草 ...
- POJ-3268
Silver Cow Party Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 13738 Accepted: 6195 ...
- go run/ go install/ go build / go get的区别
go run 运行当个.go文件 go install 在编译源代码之后还安装到指定的目录 go build 加上可编译的go源文件可以得到一个可执行文件 go get = git clone + g ...
- 将Sphinx的日志放置到/dev/shm里需要注意的事情
可以采用定时器控制,清空日志的办法: 几种快速清空文件内容的方法: $ : > filename #其中的 : 是一个占位符, 不产生任何输出. $ > filename $ echo “ ...
- asp.net webform 打造私人后台管理系统(附源码)
系统简介 git地址:https://github.com/qingfengjun/XSSystem 不少人让我做公司的网站,要求不多,但是需要有一个后台系统,所以就有了开发的动力.也想做个系统自己学 ...
- mac安装jdk1.8
一. http://www.oracle.com/technetwork/java/javase/downloads/index.html 去jdk官网下载 二.安装 一路傻瓜式安装,下一步下一步 三 ...
- HDU 4417.Super Mario-可持久化线段树(无修改区间小于等于H的数的个数)
Super Mario Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- 如何直接运行python文件
1. 在Windows上是不能直接运行python文件的,但是,在Mac和Linux上是可以的,方法是在.py文件的第一行加上一个特殊的注释: #!/usr/bin/env python3 print ...
- Rxjava与Retrofit的使用
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha ---- -----
- BZOJ 2288 【POJ Challenge】生日礼物(贪心+优先队列)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2288 [题目大意] 给出一列数,求最多取m段连续的数字,使得总和最大 [题解] 首先我 ...