3

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

我想"www.example.com"用于我的 photologue,但我不知道如何覆盖MEDIA_URLphotologue 的设置。你知道有什么办法可以解决这个问题吗?

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

4

1 回答 1

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(),所以如果你定义一个PhotoSize名为 'admin_thumbnail' 的方法,上面的方法也应该在那里工作。

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

于 2012-06-12T10:30:20.877 回答