【问题标题】:an error with django media and cachedjango 媒体和缓存错误
【发布时间】:2013-06-04 20:19:18
【问题描述】:

我使用来自sorl-thumbnail

我有一个像这个模型的模型

from sorl.thumbnail import ImageField
class Book(models.Model):
    title = models.CharField(max_length=255)
    thumb =  models.ImageField(upload_to='book')

并将一个书本对象(我在 django admin 中创建并在 django admin 中设置图片)发送到我的模板:

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

但是我的页面有这个错误:

GET http://localhost:8000/media/cache/5b/c9/5bc90276a1fb475eb4c28816804e93fa.jpg 404 (NOT FOUND)

我该如何解决这个错误?

我的设置.py:

MEDIA_ROOT = os.path.abspath(os.path.dirname(__file__)) + '/media/'
MEDIA_URL = '/media/'

在我的 urls.py 中有:

urlpatterns += patterns('',
    (r'^media/(.*)$', 'django.views.static.serve', {'document_root': os.path.join(os.path.abspath(os.path.dirname(__file__)), 'media')}),
)

我从 django 开发服务器使用。

【问题讨论】:

  • 文件是否存在于正确的路径中?
  • 我使用 django admin 来添加拇指!不正确?
  • 我的意思是文件是否存在于缓存文件夹中?

标签: python django image sorl-thumbnail


【解决方案1】:

我使用这个配置,试试这个行
设置.py

SITE_ROOT = os.path.dirname(__file__)
THUMBNAIL_DEBUG = True
MEDIA_ROOT = os.path.join(SITE_ROOT, 'media')
MEDIA_URL = '/media/'

url.py

from django.conf import settings
media_root = getattr(settings, 'MEDIA_ROOT', '/media')    

urlpatterns += patterns('', 
url(r'^media/(?P<path>.*)$','django.views.static.serve',
    {'document_root': media_root})
)

【讨论】:

  • cache/5b/c9/5bc90276a1fb475eb4c28816804e93fa.jpg 在我的目录中存在!但是页面有这个错误:GET http://localhost:8000/media/cache/5b/c9/5bc90276a1fb475eb4c28816804e93fa.jpg 404 (NOT FOUND)
  • 将简单的静态文件放入媒体根目录并检查它,例如在媒体中添加 simple.css 并重新启动服务器并检查 url:127.0.0.1:8000/media/simple.css 然后告诉我。
  • 缓存文件夹不在媒体文件夹上创建。
  • 哪个操作系统?你的许可呢?你的网络服务器可以写在这个文件夹里吗?试试:mkdir media/cache && chmod 777 media/cache
  • 我在 Ubuntu 中使用。我认为缓存文件夹是由 redis 创建的(sorl-thumbnail 使用来自 redis)
猜你喜欢
  • 1970-01-01
  • 2013-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-23
  • 1970-01-01
  • 2015-02-23
相关资源
最近更新 更多