【问题标题】:How do I use sorl-thumbnail? (django)如何使用 sorl-thumbnail? (django)
【发布时间】:2012-06-21 09:08:51
【问题描述】:

我一直在查看 sorl-thumbnail 的文档,但我仍然不知道如何: 1.上传图片到sorl-thumbnail。 2. 选择性地显示来自 sorl-thumbnail 的图像。 (例如,从视图中从 sorl-thumbnail 加载特定图像并显示它,自定义大小等)

您能否举一些具体的例子来说明如何在 django 视图中使用这个库?

提前致谢:)

【问题讨论】:

    标签: python django django-models thumbnails sorl-thumbnail


    【解决方案1】:

    如果您想要更大的灵活性,您可以在视图中生成缩略图。以下直接来自sorl-thumbnail documentation

    from sorl.thumbnail import get_thumbnail
    
    im = get_thumbnail(my_file, '100x100', crop='center', quality=99)
    

    im then 与您从 thumbnail 模板标签返回的内容相同。因此,您可以将该变量添加到模板上下文中,或者只是其中的一部分。例如,如果您只想要 URL:

    my_context = {
        'image_url': im.url,
    }
    

    【讨论】:

      【解决方案2】:

      您可以通过缩略图模板标签来使用 sorl.thumbnail。这是一个例子:

      {% load thumbnail %}
      
      {% thumbnail recipe.image "430x250" as thumb %}
           <img src="{{ thumb.url }}" width="{{ thumb.width }}" height="{{ thumb.height }}" alt="{{ recipe.title }}" />
      {% endthumbnail %}
      

      您不会将图像上传到 sorl.thumbnail 或从 sorl.thumbnail 加载它们。正确配置后,它会自动调整大小并存储图像,您可以使用thumbnail模板标签来获取图像的正确URL。

      【讨论】:

      • 感谢您的回复 :D 顺便说一句,我没有办法使用 sorl-thumb 选择性地显示数据库中的图像吗?另外,你能给我一些示例 django 视图部分吗? (不仅仅是模板部分)再次感谢
      • 视图没有缩略图代码(除非你想)。在上面的示例中,它是一个食谱模型的图像。如果您愿意,可以将视图中的变量传递给模板(例如,image = ...,然后将 recipe.image 替换为 image)。
      • 只是为了说清楚,因为我也在努力理解它。 Sorl 不将图像保存在数据库中,而是拥有自己的文件系统存储?本质上,我只需要上传一个尺寸的图像,然后只需请求我想要的任何尺寸,在这种情况下,sorl 要么即时生成该图像,要么获取它,如果它之前是从它自己的存储中生成的?
      【解决方案3】:

      当我必须使用 sorl-thumbnail 时,我会区分两种图像:

      带有 ImageField 的 Django 对象

      当我在 Django 中有一个带有 ImageField 的对象时,我会使用这样的缩略图来渲染它:

      # Let's supose our object imagefield is called img
      {% thumbnail obj.img "100" upscale=false as im %}
         <img src="{{ im.url }}"/>
      {% empty %}  # In case the object doesn't have an image, use generic one
         {% thumbnail "img/empty_img.jpg" "236" upscale=false as im %}
              <img src="{{ im.url }}" />
         {% endthumbnail %}
      {% endthumbnail %}  
      

      图片按网址/路径

      使用项目的本地路径加载图片:

      {% thumbnail "img/myImage.jpg" "236" upscale=false as im %}
          <img src="{{ im.url }}" />
      {% endthumbnail %}
      

      重要提示:请记住,缩略图将 MEDIA_URL 连接到您提供的路径,因此在这种情况下,您需要像 yourapp/media/img/myImage.jpg 这样的路径

      使用 URL 加载图片非常简单且示例:

      {% thumbnail "http://www.nextgen-gallery.com/wp-content/uploads/2008/12/abend.jpg" "236" upscale=false as im %}
          <img src="{{ im.url }}" />
      {% endthumbnail %}
      

      【讨论】:

        猜你喜欢
        • 2013-01-30
        • 2012-11-22
        • 2016-05-09
        • 2012-10-02
        • 2011-05-13
        • 2011-09-26
        • 2012-04-17
        • 2012-09-05
        • 2012-08-26
        相关资源
        最近更新 更多