【问题标题】:Is the auto generated photologue image urls overridable?自动生成的 photologue 图像 url 是否可以覆盖?
【发布时间】:2012-06-05 09:32:32
【问题描述】:

我有两个独立的服务器。一个是在"www.example.com" 上托管django 实例,另一个是在"static.example.com" 上提供静态文件。在 django 设置中,MEDIA_URL 指向"static.example.com"。因此,我的 photologue 使用的是"static.example.com" 域。

我想将"www.example.com" 用于我的照片记录,但我不知道如何覆盖照片记录的MEDIA_URL 设置。你知道有什么方法可以解决这个问题吗?

注意: Django 通过 apache 提供服务,静态文件托管在 AWS(亚马逊网络服务)上。我只想更改 photologue 域。其他静态文件必须保留在原处。

【问题讨论】:

  • 尝试通过 apache 等网络服务器提供媒体文件...
  • 我不明白你的意思。你能说得更详细些吗?
  • 我们一般通过 apache 而非 django 提供静态内容,例如图片
  • 我在我的问题中添加了一个注释:) 我收到了 django 所在的 apache 的静态文件。之后我将静态文件移动到 Amazon AWS 以减少项目服务器上的流量。

标签: django photologue media-url


【解决方案1】:

很遗憾,Photologue 没有为此提供设置。

但是查看代码后,我发现了一种解决方法,应该可以解决问题。我假设您使用 get_SIZE_url() 方法。所有这些方法都调用self.cache_url()。因此,您可以创建一个覆盖此方法的 ImageModel(或 Photo,如果您想拥有它附带的功能)的子类。

from photologue.models import ImageModel  # or Photo

class LocalPhoto(ImageModel):   # or Photo

    def cache_url(self):
        local_path = os.path.dirname(self.image.url)[7:].split('/', 1)[1]
        return '/%s/%s' % (local_path, 'cache')

如果你扩展了Photo,你已经有一个工作的get_absolute_url(),否则一个实现是直截了当的。

Django admin 使用get_admin_thumbnail_url(),所以如果你定义了一个名为“admin_thumbnail”的PhotoSize,上面的方法也应该在那里工作。

Effects 有一个方法 sample_url() 用于在 Django admin 中显示对示例图像的效果。此方法基于MEDIA_URL,因此不起作用。不幸的是,在这种情况下,您不能简单地覆盖此方法。但由于这些图像不会改变,您可以将它们上传到 AWS。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-17
    • 1970-01-01
    相关资源
    最近更新 更多