我有两个单独的服务器。一种是在"www.example.com"
上托管django实例,另一种是在"static.example.com"
上提供静态文件。在Django设置中,MEDIA_URL
指向"static.example.com"
。因此,我的照片记录使用的是"static.example.com"
域。
我想在照片日志中使用"www.example.com"
,但无法弄清楚如何覆盖照片日志的MEDIA_URL
设置。你知道解决这个问题的任何方法吗?
注: Django通过基于AWS的Apache静态文件(Amazon Web Service)提供服务。我只想更改photologue域。其他静态文件必须保留在原处。
最佳答案
不幸的是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 admin中的示例图像上显示效果。此方法基于MEDIA_URL
,因此无法正常工作。不幸的是,在这种情况下,您不能简单地重写此方法。但是由于这些图像不会改变,您可以将它们上传到AWS。
关于django - 自动生成的photologue图片网址是否可以覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10894852/