Django 从视图中提供图片
我正在尝试在Django的一个视图中显示一张透明的图片。
这是HTML代码 -
// other html stuff
< img src="{% url 'minor_url_test' }" alt="Smiley face" height="1" width="1">
// other html stuff
urls.py 文件 -
url(r'^minor_image_url/$', 'minor_url_test', name='minor_url_test')
views.py 文件 -
def minor_url_test(request):
TRANSPARENT_1_PIXEL_GIF = "\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00\xff\xff\xff\x00\x00\x00\x21\xf9\x04\x01\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02\x44\x01\x00\x3b"
import ipdb
ipdb.set_trace()
return HttpResponse(TRANSPARENT_1_PIXEL_GIF, content_type='image/gif')
我从一个不同的视图中提供这个HTML文件,所有的HTML内容都能正常显示,但图片却不行。而且 minor_url_test 这个视图根本没有被调用。
我哪里做错了呢?
1 个回答
0
你发的代码看起来没什么大问题,不过有几个小地方需要注意:
- 在
<
和img
之间不要加空格。正确的写法是:<img ...>
。 - 图片文件的名字后面应该有合适的后缀。比如,网址应该是:
minor_image_url.gif
,不过现在大部分现代浏览器对此并不太在意。 - 视图(view)可能没有正确导入。你需要提供完整的路径,比如
my_app.views.minor_url_test
。不过我更喜欢这样导入视图:
代码
from my_app import views
urlpatterns = patterns('',
# ...
url(r'^minor_image_url/$', views.minor_url_test, name='minor_url_test'),
)
这样做的好处是,如果视图不存在或者找不到,控制台会打印出错误信息。
如果我的建议都没有帮到你,请你再完善一下你的问题:
- 展示一下网页浏览器获取的HTML代码。几乎所有浏览器都有“查看源代码”或“检查源代码”的选项。浏览器获取的代码应该是
<img src="/minor_image_url/" alt="Smiley face" height="1" width="1">
。 - 重启一下网络服务器(在Linux/Mac上按ctrl + C,然后输入
./manage runserver
),访问包含IMG标签的网页(就这个网页),并把完整的控制台输出发出来。 - 手动访问
http://your_server/minor_image_url/
。如果出现了Django错误页面,这会帮助你解决问题。如果你看不懂错误信息,可以把它发出来。同时确保你的浏览器能够显示图片(比如,Firefox会用灰色背景显示图片,而不是空白页面。这样你就能确认你正在处理的是图片,而不是空白页面)。