Лучший способ исправить предварительный просмотр django плоской страницы, прикрепленной к нескольким сайтам
У меня есть плоская страница, прикрепленная к нескольким сайтам. Его предварительный просмотр администратора выбирает произвольный сайт, что вполне очевидно после отладки до строк 35-36 изdjango.contrib.contenttypes.views.shortcut()
,
Как лучше всего решить эту проблему?
Я вижу, что shortcut()
функция занимает request
объект, поэтому я мог бы просто извлечь хост оттуда, но я предпочитаю не исправлять живой сервер.
Я еще не смотрел на получение адреса администратора, так что, может быть, кто-то может предложить какое-то хорошее решение?
1 ответ
На мой взгляд, это может считаться ошибкой в Django, и по крайней мере частичное исправление будет состоять в том, чтобы проверить, является ли текущий SITE_ID одним из сайтов, связанных с объектом, и, если это так, использовать его вместо произвольного. Вы можете подать заявку с патчем.
Чтобы исправить это без внесения исправлений в Django, вы можете переопределить шаблон формы редактирования администратора для модели плоских страниц, чтобы можно было вставить нужный URL-адрес в эту ссылку вместо стандартного, который идет в контекстном представлении. Я не изучил это достаточно, чтобы знать, насколько чистым это будет.
Другой вариант может заключаться в том, чтобы обезопасить модель Flatpage с помощью метода get_absolute_url, который фактически возвращает полный абсолютный URL-адрес, включая домен, на основе Site.objects.get_current(). Domain.