【问题标题】:Django Imagekit - how to get the url not in the template?Django Imagekit - 如何获取不在模板中的 url?
【发布时间】:2013-10-04 08:38:46
【问题描述】:

我一直在使用 django imagekit,在模板中没有任何问题,但现在我需要在视图中获取 url 而不是模板,按照 imagekit 文档中的这个示例:

source_file = open('/path/to/myimage.jpg')
image_generator = Thumbnail(source=source_file)
result = image_generator.generate()

所以我这样做了:

course_img = open(settings.MEDIA_ROOT+str(course.image), 'rb+')     
image_generator = myapp_images.Thumbnail100x100(source=course_img)
result = image_generator.generate()

然后,我尝试从“结果”变量中获取 url,但我不知道如何:

details_html += "<img class='img-rounded' src='"+ str(result) +"'/>

我一直在尝试使用str(result), result.url, result.name 等...没有运气,知道如何获得它吗? 谢谢

【问题讨论】:

    标签: python django imagekit


    【解决方案1】:

    我从google imagekit group的imagekit作者那里得到了解决方案:

    在我的例子中,我想与缓存文件进行交互,为了做到这一点,我们必须用ImageCacheFile 包装我的生成器,如下所示:

    from imagekit.cachefiles import ImageCacheFile
    
    image_generator = myapp_images.Thumbnail00x100(source=course.image)
    result = ImageCacheFile(image_generator)
    

    所以result 对象是我所期待的,现在我可以使用result.url 读取网址。

    【讨论】:

    • 这是正确的。对于任何想知道myapp_images 是什么的人,我想这是您保留自定义生成器的地方。你可以改用from imagekit.generatorlibrary import Thumbnail。
    【解决方案2】:

    生成器本身不允许您即时执行此操作,它会生成类似文件的对象,这意味着它不会将文件保存在磁盘上,这意味着没有文件名,因此没有 URL 名称..

    您可以保存对象并手动生成 url,也可以像这样使用ImageCacheFile:

    from imagekit.cachefiles import ImageCacheFile
    
    file = ImageCacheFile(image_generator, name='my_image.thumb.jpg')
    file.generate()
    
    print file.url
    

    【讨论】:

    • 谢谢你的回答马里奥,但我无法让它工作,我遇到了一些关于“name=´the.jpg´”属性的问题,顺便说一句,它很接近,再次感谢你的时间在这里回答。干杯。
    猜你喜欢
    • 1970-01-01
    • 2011-02-22
    • 2019-12-05
    • 2020-02-01
    • 1970-01-01
    • 2010-11-11
    相关资源
    最近更新 更多