自动生成的photologue图像网址是否可以覆盖?

时间:2012-06-05 09:32:32

标签: django photologue media-url

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

我想用"www.example.com"作为我的照片,但我无法弄清楚如何覆盖照片的MEDIA_URL设置。你知道怎么解决这个问题吗?

注意: Django正在服务于AWS(亚马逊网络服务)上托管的apache,静态文件。我只想改变photologue域名。其他静态文件必须保持原样。

1 个答案:

答案 0 :(得分: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管理员使用get_admin_thumbnail_url()因此,如果您定义名为“admin_thumbnail”的PhotoSize,则上述方法也应该在那里工作。

效果有一个方法sample_url()用于显示Django管理员对样本图像的影响。此方法基于MEDIA_URL,因此无法使用。不幸的是,在这种情况下,您不能简单地覆盖此方法。但由于这些图像不会改变,您可以将它们上传到AWS。