Можно ли переопределить автоматически сгенерированные 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.

Другие вопросы по тегам