【问题标题】:Django Serve an image from a viewDjango 从视图中提供图像
【发布时间】:2014-08-23 14:11:53
【问题描述】:

我正在尝试从我在 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 视图永远不会被击中。

我做错了什么?

【问题讨论】:

  • 你能把浏览器给出的 HTML 贴出来吗?

标签: python html css django django-staticfiles


【解决方案1】:

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

  • 不要在&lt;img 之间添加空格。应该是:&lt;img ...&gt;
  • 图像文件应始终以正确的扩展名结尾。因此 URL 应该是: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'),
)

这样做的好处是,如果视图不存在或找不到,控制台将打印错误。

如果我的解决方案都没有帮助到您,请改进您的问题:

  • 显示 Web 浏览器获取的 HTML 代码。几乎所有浏览器都有“显示源代码”或“检查源代码”选项。网络浏览器获取的代码应该是&lt;img src="/minor_image_url/" alt="Smiley face" height="1" width="1"&gt;
  • 重新启动 Web 服务器(在 linux/mac 上按 crtl + C 并键入 ./manage runserver),访问包含 IMG 标签的网页(只有这个),然后发布完整的控制台输出。
  • 手动访问http://your_server/minor_image_url/。如果出现 django 错误页面,它将帮助您解决问题。如果你不明白,把它说的贴出来。还要确保您的浏览器以某种方式突出显示图像(例如,Firefox 将显示灰色背景而不是白色页面。这样,您可以确定您处理的是图像而不是空白页面)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    • 1970-01-01
    • 2015-09-02
    相关资源
    最近更新 更多