Flask扩展,在使用root的子路径时无法返回图像路径

时间:2015-10-22 17:49:26

标签: flask jinja2

我正在努力为Flask-Resize添加其他功能,特别是添加应该为原始文件提供服务的功能,而不是在大小和其他参数与原始文件相同时生成缓存文件。

我在检查中已经解决了所有问题,如果图像在RESIZE_ROOT目录中,一切正常,但如果没有,当图像生成器检测到它不需要做任何事情时返回原始文件路径,jinja2似乎无法获取图像。

test_img.jpg目录中使用大小为200x300px的图像RESIZE_ROOT可以正常工作:

<img src="{{ 'test_img.jpg'|resize('200') }}"></img>

输出:

http://127.0.0.1:5000/static/images/test_img.jpg
127.0.0.1 - - [23/Oct/2015 03:44:28] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [23/Oct/2015 03:44:28] "GET /static/css/main.css HTTP/1.1" 200 -
127.0.0.1 - - [23/Oct/2015 03:44:28] "GET /static/images/test_img.jpg HTTP/1.1" 200 -
  -- test_img.jpg fetched and displayed correctly

然而,当图像移动到子目录ad/test_img.jpg时,则控制台输出甚至不表示它正在获取图像

http://127.0.0.1:5000/static/images/ad/test_img.jpg
127.0.0.1 - - [23/Oct/2015 03:58:42] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [23/Oct/2015 03:58:42] "GET /static/css/main.css HTTP/1.1" 200 -
  -- ad/test_img.jpg isn't even being fetched

使<a href="{ 'ad/test_img.jpg'|resize('200') }">image</a>生成一个有效的图像链接,因此文件路径正确返回,所以我不知道发生了什么。

这是相关代码; generate_image如果检测到它不应生成图片,则会引发exc.StopImageGeneration异常。

if not os.path.exists(full_cache_path):
    try:
        generate_image(inpath=original_path, outpath=full_cache_path,
                       format=format, width=width, height=height,
                       bgcolor=bgcolor, upscale=upscale, fill=fill,
                       anchor=anchor, quality=quality,
                       progressive=progressive,
                       placeholder_reason=placeholder_reason,
                       force_cache=force_cache)
    except exc.StopImageGeneration:
        full_cache_url = unicode(resize_url+image_url)

print (full_cache_url)
return full_cache_url.replace('\\', '/')

我的Flask-Resize初始化参数如果重要:

(RESIZE_URL='http://127.0.0.1:5000/static/images/', RESIZE_ROOT='static/images/')

1 个答案:

答案 0 :(得分:0)

事实证明这与Flask / Jinja2无关,这是Adblock的错;它静静地阻挡了图像。

我为localhost和127.0.0.1添加了一个例外后没有问题。