采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
读取失败的图片请求的是8080端口,正常能找到的图片都是请求的8000端口,想问问老师怎么改呀?该配置的地方我应该都配置好了,填的也都是8000端口
settings:
urls:
api.js:
这个是上传图片之后返回的url的具体逻辑 你可以在这里打个断点看看返回的url是否带有域名
设置了断点但是运行后没有任何debug信息···我在这里的media_url上按住ctrl b 去到的是我设置的那个url···
这个debug断点 只有当你在xadmin中上传图片的时候才会进入这里
啊我终于找到问题了···是因为我打少了一行代码···多谢老师
分别就1处和2处说明一下:
1处这个url是的带了域名的, 所以这个图片返回给浏览器,浏览器会直接显示出来,因为域名完整
2处返回的html,html中的图片是相对路径,所以浏览器会自动加上当前的浏览器的域名,就是 127.0.0.1:8080, 这个域名是node来接管的,所以当然加上完整的域名反而显示不出来了,因为图片是django管理的 node无法得知,所以你要想办法让生成的html中的图片url不是相对路径而是完整的路径,所以你在settings的media_url中添加上完整域名。这样图片上传的时候url就是完整的,浏览器就无法自己添加当前域名了
至于为什么在xadmin中是没问题的也就清楚了- 因为当你访问xadmin的时候域名就是django的域名啊,。他自动添加上也就没有问题了
感谢老师的详细解答,终于懂了哈哈哈 但是我setting里面已经设置了media_url了呀,为什么还是不行? MEDIA_URL = 'http://127.0.0.1:8000/media/' STATICFILES_DIRS = ( os.path.join(BASE_DIR, "static"), ) MEDIA_ROOT = os.path.join(BASE_DIR, "media")
谢谢老师的细心解答···但是好像还是不太懂···于是重新看了下视频 发现我的这一步并没有像老师那样返回image,请问老师这个要怎么解决呀?
这样给你描述吧。 如果后端返回图片只给了一个相对路径并没有域名,那么浏览器会自动加上当前的服务的域名,因为你是使用node启动的,所以也就会被浏览器自动加上 127.0.0.1:8080/media/xxx/xxx 很明显这个请求会被发送给node 而不是发送给django系统,当然也就找不到了,所以你的数据应该在图片的url中返回完整的包括后端域名的url 防止被浏览器自动加上当前的域名
你是要解决1处没有到艾玛 还是要解决2处没有代码?
都想解决···
1. 上面的问题好解决 你看看view中传递过来的images中的url是否有后端的域名 2. 下面的解决稍微麻烦一点 MEDIA_URL = "127.0.0.1:8000/media/" 把域名配置到settings中的media_url中 然后记得要在xadmin中重现上传一下图片试试
还是一个一个问题来吧···我没懂老师对于第一问题的解答,我目前看到的是,我从xadmin登进去看数据没问题,图片也都能正常显示,然后浏览器f12看到的结果是他请求的是127.0.0.1:8080,而不是127.0.0.1:8000,所以我觉得问题是在这里···但我不太清楚怎么改···还望老师说得详细一点,感谢感谢
登录后可查看更多问答,登录/注册
Django REST framework课程视频,RESTFul API前后端分离开发
10.3k 1
4.3k 51
1.3k 19
925 19
1.6k 19