Получить 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.

Также обратите внимание, что если расположение страницы в дереве страниц изменено или ярлык (как определено в Promotetab) изменен, то 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)
Другие вопросы по тегам