Можно ли переопределить автоматически сгенерированные URL-адреса изображений с фото?
У меня есть два отдельных сервера. Один из них размещает инстанс django на "www.example.com"
другой обслуживает статические файлы "static.example.com"
, В настройках Django, MEDIA_URL
указывает на "static.example.com"
, Поэтому мой фотолог использует "static.example.com"
домен.
Я хочу использовать "www.example.com"
для моего фотолога, но я не могу понять, как я могу переопределить MEDIA_URL
установка для фотолога. Вы знаете какой-нибудь способ решить это?
Примечание. Django работает через Apache, статические файлы, размещенные на AWS (Amazon Web Service). Я просто хочу поменять только фотологию домена. Другие статические файлы должны оставаться там, где они есть.
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()
в противном случае реализация является прямой.
Джанго админ использует get_admin_thumbnail_url()
так что если вы определите PhotoSize
с именем 'admin_thumbnail' вышеупомянутый метод также должен работать там.
У эффектов есть метод sample_url()
используется для демонстрации эффекта на образце изображения в админке Django. Этот метод основан на MEDIA_URL
так что это не сработает. К сожалению, в этом случае вы не можете просто переопределить этот метод. Но поскольку эти изображения не изменятся, вы можете загрузить их в AWS.