我有两个独立的服务器。一个是在"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域名。其他静态文件必须保持原样。
答案 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。