请稍等 ...
×

采纳答案成功!

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

个别图片请求连接有问题

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

读取失败的图片请求的是8080端口,正常能找到的图片都是请求的8000端口,想问问老师怎么改呀?该配置的地方我应该都配置好了,填的也都是8000端口

settings:

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

urls:

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

api.js:

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

正在回答 回答被采纳积分+3

5回答

bobby 2020-09-18 20:22:09

https://img1.sycdn.imooc.com/szimg/5f64a65a09b1af5a18290690.jpg 这个是上传图片之后返回的url的具体逻辑 你可以在这里打个断点看看返回的url是否带有域名

0 回复 有任何疑惑可以回复我~
  • 提问者 Simon_zzw #1
    设置了断点但是运行后没有任何debug信息···我在这里的media_url上按住ctrl b 去到的是我设置的那个url···
    回复 有任何疑惑可以回复我~ 2020-09-19 06:22:43
  • bobby 回复 提问者 Simon_zzw #2
    这个debug断点 只有当你在xadmin中上传图片的时候才会进入这里
    回复 有任何疑惑可以回复我~ 2020-09-20 12:57:52
  • 提问者 Simon_zzw 回复 bobby #3
    啊我终于找到问题了···是因为我打少了一行代码···多谢老师
    回复 有任何疑惑可以回复我~ 2020-09-22 06:18:42
bobby 2020-09-17 11:21:38

https://img1.sycdn.imooc.com//szimg/5f62d58809862db012300668.jpg分别就1处和2处说明一下:

1处这个url是的带了域名的, 所以这个图片返回给浏览器,浏览器会直接显示出来,因为域名完整

2处返回的html,html中的图片是相对路径,所以浏览器会自动加上当前的浏览器的域名,就是 127.0.0.1:8080, 这个域名是node来接管的,所以当然加上完整的域名反而显示不出来了,因为图片是django管理的 node无法得知,所以你要想办法让生成的html中的图片url不是相对路径而是完整的路径,所以你在settings的media_url中添加上完整域名。这样图片上传的时候url就是完整的,浏览器就无法自己添加当前域名了


至于为什么在xadmin中是没问题的也就清楚了-  因为当你访问xadmin的时候域名就是django的域名啊,。他自动添加上也就没有问题了

0 回复 有任何疑惑可以回复我~
  • 提问者 Simon_zzw #1
    感谢老师的详细解答,终于懂了哈哈哈
    但是我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")
    回复 有任何疑惑可以回复我~ 2020-09-18 04:44:32
提问者 Simon_zzw 2020-09-17 02:40:24

//img1.sycdn.imooc.com/szimg/5f625ba109efbe0511640658.jpg

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


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

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

谢谢老师的细心解答···但是好像还是不太懂···于是重新看了下视频 发现我的这一步并没有像老师那样返回image,请问老师这个要怎么解决呀?

0 回复 有任何疑惑可以回复我~
bobby 2020-09-12 13:45:25

 这样给你描述吧。 如果后端返回图片只给了一个相对路径并没有域名,那么浏览器会自动加上当前的服务的域名,因为你是使用node启动的,所以也就会被浏览器自动加上 127.0.0.1:8080/media/xxx/xxx 很明显这个请求会被发送给node 而不是发送给django系统,当然也就找不到了,所以你的数据应该在图片的url中返回完整的包括后端域名的url 防止被浏览器自动加上当前的域名

0 回复 有任何疑惑可以回复我~
bobby 2020-09-10 10:33:33

https://img1.sycdn.imooc.com//szimg/5f59907009f96e8009400545.jpg 你是要解决1处没有到艾玛 还是要解决2处没有代码?

0 回复 有任何疑惑可以回复我~
  • 提问者 Simon_zzw #1
    都想解决···
    回复 有任何疑惑可以回复我~ 2020-09-10 13:29:33
  • bobby 回复 提问者 Simon_zzw #2
    1. 上面的问题好解决 你看看view中传递过来的images中的url是否有后端的域名 2. 下面的解决稍微麻烦一点 MEDIA_URL = "127.0.0.1:8000/media/" 把域名配置到settings中的media_url中 然后记得要在xadmin中重现上传一下图片试试
    回复 有任何疑惑可以回复我~ 2020-09-11 11:11:13
  • 提问者 Simon_zzw 回复 bobby #3
    还是一个一个问题来吧···我没懂老师对于第一问题的解答,我目前看到的是,我从xadmin登进去看数据没问题,图片也都能正常显示,然后浏览器f12看到的结果是他请求的是127.0.0.1:8080,而不是127.0.0.1:8000,所以我觉得问题是在这里···但我不太清楚怎么改···还望老师说得详细一点,感谢感谢
    回复 有任何疑惑可以回复我~ 2020-09-12 06:52:28
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信