Получить URL страницы для запланированной публикации
Мои редакторы хотят знать URL-адрес конечной страницы для публикации в социальных сетях. Есть ли способ получить URL-адрес страницы, когда она будет опубликована, до ее фактической публикации (запланированная публикация)?
2 ответа
slug_url
должен дать вам то, что вам нужно:https://docs.wagtail.org/en/latest/topics/writing_templates.html?highlight=slugurl#slugurl-tag
Обратите внимание, что это может предоставить относительную ссылку, поэтому, если это так, вам нужно будет добавить доменное имя к относительному URL-адресу, чтобы создать окончательный URL-адрес для пользователя. См.
test_slugurl_tag()
подпрограммы в тестах для примера того, как использовать в коде Python.
Также обратите внимание, что если расположение страницы в дереве страниц изменено или ярлык (как определено в
Promote
tab) изменен, то URL, который вы получили с помощью
slugurl
до любого такого изменения больше не будет действительным. Однако, если вы используете трясогузку 2.16+, эта проблема может быть решена автоматически , если вы используете
wagtail.contrib.redirects
приложение.
Вот фрагмент кода, который учитывает, когда изменяется слаг или страница перемещается в дереве (вам нужно будет каким-то образом создать подкласс модели страницы и добавить новое поле
published_url
):
def save_revision(self, user=None, submitted_for_moderation=False, approved_go_live_at=None, changed=True,
log_action=False, previous_revision=None, clean=True):
old_record = Page.objects.get(id=self.id)
if old_record.slug != self.slug:
kwargs = {'update_fields': ['slug']}
Page.save(self, kwargs)
self.published_url = self.get_full_url()
return Page.save_revision(self, user, submitted_for_moderation, approved_go_live_at, changed,
log_action, previous_revision, clean)