请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

富文本插入图片返回相对路径

老师,通过富文本插入图片,保存到数据库,查出来的是相对路径,前后端分离项目界面上面展示不了,怎么办?

https://img1.sycdn.imooc.com//szimg/5b0fb2980001521108640300.jpghttps://img1.sycdn.imooc.com//szimg/5b0fb2eb0001c74213750067.jpg

https://img1.sycdn.imooc.com//szimg/5b0fb2fe000121a612600246.jpg

正在回答

3回答

这个问题是由于富文本编辑器上传图片的时候图片路径没有写完整, 只写了相对路径,所以这些图片需要使用django服务器的端口才能访问,后面如果你直接把前端项目用django返回就没有这个问题了

0 回复 有任何疑惑可以回复我~
提问者 慕移动7006633 2018-06-02 15:38:15

自己修改了ueditor的view.py的源码,目前看是解决了

https://img1.sycdn.imooc.com//szimg/5b1249640001d63307250222.jpg

1 回复 有任何疑惑可以回复我~
  • bobby #1
    好的,
    回复 有任何疑惑可以回复我~ 2018-06-05 15:21:53
  • foxxx #2
    非常感谢, 修改重新上传图片有用!
    回复 有任何疑惑可以回复我~ 2018-07-23 13:37:30
  • 修改了之后富文本就什么显示都没有了,请问这是为什么呢
    回复 有任何疑惑可以回复我~ 2019-02-20 19:56:43
weixin_慕容3256306 2018-11-29 16:44:36

Ueditor是基于django的TextField写的,TextField对应serializer的CharField不会检查里面是否有url,所以不能像ImageField一样补全url。

可以给Ueditor单独实现一个seralizer字段,自己处理下url

import re

from rest_framework.fields import CharField


class UeditorField(CharField):
    def to_representation(self, value):
        text = super(UeditorField, self).to_representation(value)
        urls = re.findall(r'src="(.*?)"', text)
        request = self.context.get('request', None)
        if request is not None:
            urls = [request.build_absolute_uri(i) for i in urls]

        text = re.sub(r'src="(.*?)"', 'src="{}"', text)
        text = text.format(*urls)
        return text


0 回复 有任何疑惑可以回复我~
  • 试了一下您的方法还是不行。
    回复 有任何疑惑可以回复我~ 2019-05-06 17:31:16
  • 这个代码是要加到哪里的?怎么使用?
    回复 有任何疑惑可以回复我~ 2019-08-04 21:21:03
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信