Django从视图中提供图像

时间:2014-07-02 17:04:35

标签: python html css django django-staticfiles

我正试图从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 :(得分:0)

您发布的代码似乎没问题,但它有一些小问题:

  • 请勿在{{1​​}}和<之间添加空格。它应该是:img而不是<img ...>
  • 图片文件应始终以适当的扩展名结尾。因此,网址应为:minor_image_url.gif,但大多数现代浏览器都不关心。
  • 视图很可能导入不正确。您需要提供完整路径(例如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代码。几乎所有浏览器都有“show source”或“inspect source”选项。 Web浏览器获取的代码应为<img src="/minor_image_url/" alt="Smiley face" height="1" width="1">
  • 重新启动Web服务器(按crtl + C并在linux / mac上键入./manage runserver),访问其中包含IMG标记的网页(仅限此),并发布完整的控制台输出。
  • 手动访问http://your_server/minor_image_url/。如果出现django错误页面,它将帮助您解决问题。如果您不理解,请发布它所说的内容。确保您的浏览器以某种方式突出显示图像(例如,firefox将显示灰色背景而不是白页。这样,您可以确定您正在处理图像而不是空白页面。)