Django图片显示问题

工具:JetBrains PyCharm 2018.1.3 x64
Django版本:2.0.5


最近课程设计在做一个电影推荐系统,前端在用DW搭好框架以后发现挪到Django上图片全部无法显示,参考网上已有的一些方法弄了很久还是没有用,最后发现bug出现在文件路径上,因为后端不是我负责,所以对链接路径不熟,导致这个问题一直困扰了我三四天才解决。

先说方法和代码:
(1)我的APP名称为moviesite,图片绝对路径为C:\Users\49614\Desktop\moviesite\static\images\logo.jpg
(2)在moviesite的urls.py文件中加入如下代码:
from django.views.static import serve

(3)在urlpatterns=[...]里最后加如下代码,注意标红处是你自己可修改的存储路径。


url(r'^index/static/(?P.*)$', serve, {'document_root':'C:\\Users\\49614\Desktop\moviesite\static'}),


这行代码的意思是,当django在解析到地址为http://127.0.0.1:8000/index/static/images/logo.JPG时
会将其解析为C:\\Users\\49614\Desktop\moviesite\static\images\logo.JPG
127.0.0.1:8000是你的服务器地址,有些人运行出来可能是localhost,这个没有关系。
(4)最后将你对应的html文件中的代码改为,注意是static不是/static(别问我 我也不知道为什么...)
<span style=图片无法显示" />
(5)最后效果如下(左上角mymovie是我自己画的logo):

Django图片显示问题_第1张图片


这是直接从源码中访问图片地址的效果,也ok:
Django图片显示问题_第2张图片

注意事项:
(1)urls.py中的版本问题

 url(r'^index/static/(?P.*)$', serve, {'document_root':'C:\\Users\\49614\Desktop\moviesite\static'}),语句如果报错

  则可能是'django.views.static.serve'调用有问题,

  删除from django.views.static import serve,改成  url(r'^index/static/(?P.*)$', django.views.static.serve, {'document_root':'C:\\Users\\49614\Desktop\moviesite\static'}),

  这个可能是Django的版本问题,1.0版本的可能会报错,具体可以参考 如何使用django显示一张图片
(2)如果上述方法仍然无法解决你的问题,试一下运行Django文件,然后右击网页显示源代码,找到你的对应语句,点击查看服务器是将你的图片链接到哪里去了,比如我的图片链接位置是http://127.0.0.1:8000/index/static/images/logo.JPG,因为我的网站首页地址是 http://127.0.0.1:8000/index, http://127.0.0.1:8000/是打不开我的主页的,所以在我的urls.py中必须是

url(r'^ index/static/(?P.*)$', django.views.static.serve, {'document_root':'C:\\Users\\49614\Desktop\moviesite\static'}),

而不是
url(r'^ static/ (?P.*)$', django.views.static.serve, {'document_root':'C:\\Users\\49614\Desktop\moviesite\static'}),
这个需要视你的网页路径而定,具体来说,当显示不出图片时,打开图片链接会是一个404页面,观察其,举例如下:

查看你的Request URL,一般会提示“ The empty path didn't match any of these.”,即你urls.py中的任何一个后缀地址都与Request URL不符合,检查第6个,保证你r^后的地址与你刚刚看的图片文件请求地址一致即可,比如我的在static前加上index/即可。
Django图片显示问题_第3张图片


小白一枚,有说的不对的地方欢迎大家指正

你可能感兴趣的:(前)