5

指示に従ってsorl-thumbnailを設定しましたが、アプリでテンプレートタグを使用しようとすると、どの画像も表示されません。

URLが無効であるように見えますが、どの追加構成が必要かは明確ではありません。

次のような画像が生成されます。

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

「cache/...」はどのようにして画像のリクエストに解決されますか?これらのリクエストは、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で指定されたディレクトリを確認しました)、ファイルシステムキャッシュを使用しているときは、アプリに関連するディレクトリcache/に保存されていました。memcacheを使用するように変更して、それが役立つかどうかを確認しました。

4

1 に答える 1

6

MEDIA_URL を正しく構成する必要があります。ImageFileの「url」属性は、基本的に、基盤となるストレージ バックエンドからの単なるパススルーです。すぐに使えるDjango の場合、upload_to パスが MEDIA_URLに追加され、FileField の URL が生成されます。

あなたが持っているもの: '' + '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

于 2011-05-31T13:51:46.057 に答える