5

我根据说明设置了 sorl-thumbnail,但是当我尝试在我的应用程序中使用模板标签时,没有任何图像出现。

似乎 url 无效,但不清楚需要什么额外配置。

生成这样的图像:

<img src="cache/e5/25/e5253a328b9130ecd7d820893f44b0e6.jpg" width="100" height="100">

“缓存/...”如何解析为对图像的请求?这些请求与我的应用程序相关,而不是 sorl-thumbnail:

[31/May/2011 07:13:05] "GET /myapp/cache/e5/25/cache/e5/25/cache/00/73/0073095ee4b968b45386ef3fec4f389c.jpg HTTP/1.1" 200 1004

以下是 settings.py 中的相关行:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    # Uncomment the next line to enable the  admin:                                          
    'django.contrib.admin',
    'mysite.myapp',
    'sorl.thumbnail',
)

CACHES = {
#    'default': {                                                                           
#        'BACKEND': 'django.core.cache.backends.db.DatabaseCache',                          
#        'LOCATION': 'cache',                                                               
#    }                                                                                    
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '127.0.0.1:11211',
    }
}

# URL that handles the media served from MEDIA_ROOT. Make sure to use a                     
# trailing slash if there is a path component (optional in other cases).                    
# Examples: "http://media.lawrence.com", "http://example.com/media/"                        
MEDIA_URL = ''

# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use   a              
# trailing slash.                                                                           
# Examples: "http://foo.com/media/", "/media/".                                             
ADMIN_MEDIA_PREFIX = '/media/'

这是我模板中的代码:

{% thumbnail auction.item.image "100x100" crop="center" as im %}
    <img src="{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}

图像肯定会被上传(我检查了upload_to中指定的目录),当我使用文件系统缓存时,它们被存储在相对于我的应用程序的目录缓存/中。我将其更改为使用 memcache 以查看是否有帮助。

4

1 回答 1

6

您需要正确配置 MEDIA_URL。ImageFile的“url”属性基本上只是来自底层存储后端的传递。对于开箱即用的 Django,upload_to 路径附加到 MEDIA_URL以生成 FileField 的 URL。

你有什么:'' + 'cache/e5/25/e5253a328b9130ecd7d820893f44b0e6.jpg'
你想要什么:'/media/' + 'cache/e5/25/e5253a328b9130ecd7d820893f44b0e6.jpg'

注意:您需要确保 MEDIA_URL 别名/映射到 Django 将您的文件上传到 (MEDIA_ROOT) 的任何目录。

----- EDIT ----
请参阅以下指向默认 Django 存储后端源的链接。 https://code.djangoproject.com/browser/django/tags/releases/1.3/django/core/files/storage.py#L154
https://code.djangoproject.com/browser/django/tags/releases/1.3 /django/core/files/storage.py#L240

于 2011-05-31T13:51:46.057 回答