如何使用django显示一张图片

  django显示图片对新手来说真的算是一个坑。。

  这里记录下小白爬坑的历程。

 

  首先,你需要一个可以运行的django服务器,能显示正常的html文本,无法显示图片

  这是html的文本,可以显示文字,无法显示图片

<h1>An Image Test</h1>
<img src="medias/1.jpg">

 

  首先,在网上搜到的办法,搜到了几个复杂的设置方法,结果都失败了。

  有一个类较为简单,可以试一试

  大概是这样的:

  在 django 中不像PHP那样有根目录的概念 而取而代之的是包的概念, 通过URLS.PY 来提供每个URL 对应的DJANGO的 函数来显示页面 
  在包的 temolates目录中 的html页面里面 是不能直接写图片 或者 CSS JS 文件的 相对|绝对 路径的 , 而是用 URLS 提供的URL对应 图片/js/css 目录的 

  调用方法如下: 

url(r'^medias/(?P<path>.*)$', 'django.views.static.serve', {'document_root': '/web/www/python/templates/images'}), 

r
'^medias/(?P<path>.*)$' # 是要 展示url的 方法/文件名 {'document_root':'/web/www/python/templates/images'} # 是要 提供 图片目录的真实路径

 



  这样 就能用 <img src="/medias/images.gif" /> 调用 图片了

  一切都完成了,结果报错???

  (r'^medias/(?P<path>.*)$', 'django.views.static.serve', {'document_root': '/web/www/python/templates/images'}), 中django报错

  说是'django.views.static.serve'调用有问题,

  改成url(r'^medias/(?P<path>.*)$', 'django.views.static.serve', {'document_root': '/web/www/python/templates/images'}),也有问题,出现 TypeError: view must be a callable or a list/tuple in the case of include().

  后来发现(r'^medias/(?P<path>.*)$', 'django.views.static.serve', {'document_root': '/web/www/python/templates/images'})估计是老版本django的调用方法,在新版本djago中改用url(“”,)来调用,将'django.views.static.serve' 改成import的方式:

from django.views.static import serve

url(r'^medias/(?P<path>.*)$', serve, {'document_root': '真实文件的目录/static/images'}), 

  打开浏览器

  直接访问图片地址:

 

   也没问题,大功告成,哈哈

 

posted @ 2017-11-27 16:36  _Undo  阅读(13866)  评论(1编辑  收藏  举报