Django在admin后台集成TinyMCE富文本编辑器添加上传图片功能
2017-09-23 21:28
1451 查看
博客网站怎么能少了图片,为TinyMCE编辑器添加上传图片功能。
第一步:定义表存图片路径
models.py
class AdminIMG(models.Model):filename = models.CharField(max_length=200, blank=True, null=True)
img = models.ImageField(upload_to = './admin')
H:\blog>python manage.py makemigrations
Migrations for 'XYZblog':
XYZblog\migrations\0002_auto_20170923_2018.py
- Create model AdminIMG
H:\blog>python manage.py migrate
Operations to perform:
Apply all migrations: XYZblog, admin, auth, contenttypes, sessions
Running migrations:
Applying XYZblog.0002_auto_20170923_2018... OK
第二步:定义视图,让图片直接显示在编辑框内
views.py
from .models import AdminIMGdef uploadIMG(request):
img = request.FILES.get('img')
adminIMG = AdminIMG()
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)
第三步:定义上传的目录
settings.py
MEDIA_ROOT = os.path.join(BASE_DIR, 'static/upload/img')
第四步:定义url
urls.py
from django.views.static import servefrom blog.settings import MEDIA_ROOT
urlpatterns = [
url(r'uploadIMG/',views.uploadIMG,name='uploadIMG'),
url(r'^media/(?P<path>.*)$', serve, {'document_root': MEDIA_ROOT, }),
......
]
第五步:编辑\static\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="/temporary/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');
console.log(csrftoken);
$('#my_form').append('<input type="hidden" name="csrfmiddlewaretoken" value='+csrftoken+' />');
});
编辑器已有图片上传功能:
保存,查看数据库:
查看上传目录:
查看前台显示:
OK!
相关文章推荐
- Django Admin实现上传图片校验功能
- Django在admin后台集成TinyMCE富文本编辑器
- django admin后台接入tinymce并且支持图片上传
- 给Django后台富文本编辑器添加上传文件的功能
- magento 后台添加图片上传功能
- django后台上传的图片怎么在admin后台查看和前端显示,MEDIA_URL怎么用?
- ckeditor ckfinder 集成 ,添加本地上传图片功能
- django中tinymce添加图片上传功能
- aspcms后台内容编缉器里添加上传图片功能
- [py][mx]django添加后台课程机构页数据-图片上传设置
- ASP中配置Kindeditor上传图片选择添加水印功能
- 给FreeTextBox添加上传图片功能
- FCKeditor编辑器添加图片上传功能及图片路径问题解决方法
- Django 后台上传图片前端无法展示
- MVC.Net5:添加Tinymce的图片上传功能
- django 后台上传图片在前台显示urls,model,html,view
- Django后台开发笔记①:关于DjangoUeditor与python3存在兼容性问题的解决方案(即解决图片无法上传问题)
- dede5.7织梦后台广告插件增加图片上传功能
- [two scoops]为django admin后台添加模板(使用grappelli)
- 案例37-后台商品添加的代码实现加入图片上传