Trumbowyg:Django服务器可以检测文件上传但不能检测图像URL输入

Zor*_*gan 5 javascript python django ajax trumbowyg

我正在使用Trumbowyg,一个WYSIWYG JavaScript编辑器,它具有从粘贴的URL渲染图像的功能.它还有一个上传插件,可以上传本地图像和自定义服务器端处理.

我的python/django函数upload_image()可以成功检测上传的图像 - 但是当我使用URL图像输入时,我的python函数无法检测到它.Trumbowyg只是渲染图像而不通过我的python后端.

这是我的代码:

$('#id_content').trumbowyg({
    btnsDef: {
        // Create a new dropdown
        image: {
            dropdown: ['insertImage', 'upload'],
            ico: 'insertImage'
        }
    },
    // Redefine the button pane
    btns: [
        ['strong', 'em', 'del'],
        ['link'],
        ['image'], // Our fresh created dropdown
    ],
    plugins: {
        // Add imagur parameters to upload plugin for demo purposes
        upload: {
            serverPath: '/upload_image/',
            fileFieldName: 'content_image',
            urlPropertyName: 'url'
        }
    }
});
Run Code Online (Sandbox Code Playgroud)
def upload_image(request):
    print('Success') #only prints when I use the upload input, not the URL input
Run Code Online (Sandbox Code Playgroud)

为什么可以检测上传的图像而不是URL输入?

xyr*_*res 4

正如已经指出的,如果用户使用 URL 上传图像,Trumbowyg 不会将 URL 发送到后端。

但如果您确实想在自己的服务器上托管图像,有一种方法可以做到这一点。

当用户提交表单时,您将在后端收到文本区域的内容。然后您可以阅读内容并查找<img src="...">标签。

此时,您可以检查该src值是否不以您的 S3 存储桶主机名开头,您可以使用urllibrequests库下载该图像,将其保存到您的存储桶并替换该src值。

由于提交的数据将是 HTML 格式,请查看优秀的Beautiful Soup。它将使解析 HTML 变得容易。