Лучший способ исправить предварительный просмотр 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.

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