不编辑ckeditor源代码好像没有办法给ckeditor上传数据添加数据。要修改的源代码是 plugins/dialogui/plugin.js,在 ckeditor 3.6.2 中的第 1440 行附近,其中 ckeditor 创建了上传 iframe 使用的表单。
// ADDED TO CKEDITOR CODE %<
var csrfitems = document.getElementsByName("csrfmiddlewaretoken")
var csrftoken = ""
if(csrfitems.length > 0)
csrftoken = csrfitems[0].value
// >% END OF ADDED CODE
if ( elementDefinition.size )
size = elementDefinition.size - ( CKEDITOR.env.ie ? 7 : 0 ); // "Browse" button is bigger in IE.
frameDocument.$.write( [ '<html dir="' + langDir + '" lang="' + langCode + '"><head><title></title></head><body style="margin: 0; overflow: hidden; background: transparent;">',
'<form enctype="multipart/form-data" method="POST" dir="' + langDir + '" lang="' + langCode + '" action="',
CKEDITOR.tools.htmlEncode( elementDefinition.action ),
'">',
// ADDED TO CKEDITOR CODE
'<input type="hidden" name="csrfmiddlewaretoken" value="',csrftoken,'"/>',
// >% END OF ADDED CODE
'<input type="file" name="',
CKEDITOR.tools.htmlEncode( elementDefinition.id || 'cke_upload' ),
'" size="',
CKEDITOR.tools.htmlEncode( size > 0 ? size : "" ),
'" />',
'</form>',
现在我们可以在 ckeditor 中使用 django 安全地上传