Sorl-thumbnail坏网址

时间:2011-05-31 12:19:03

标签: django sorl-thumbnail

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

似乎网址无效,但目前尚不清楚需要哪些其他配置。

生成如下图像:

<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来查看是否有帮助。

1 个答案:

答案 0 :(得分:6)

您需要正确配置MEDIA_URL。 ImageFile的"url" attribute基本上只是底层存储后端的传递。对于开箱即用的Django,upload_to path is appended to MEDIA_URL生成FileField的URL。

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

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

-----编辑----
请参阅以下指向默认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