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'}),
打开浏览器
直接访问图片地址:
也没问题,大功告成,哈哈