0

我的编辑想知道在社交媒体上发布的结束页面 url。有没有办法在实际发布之前获取页面 URL(预定发布)?

4

2 回答 2

0

这里的代码片段考虑了 slug 更改或页面在树中移动时的情况(您需要以某种方式对 Page 模型进行子类化并添加一个新字段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)
于 2022-02-21T21:16:59.750 回答
0

slug_url应该给你你需要的东西: https ://docs.wagtail.org/en/latest/topics/writing_templates.html?highlight=slugurl#slugurl-tag

请注意,这slugurl可能会提供相对链接,因此如果提供,那么您必须将域名添加到相对 url 以便为用户创建最终 url。有关如何在 Python 代码中使用的示例,请参阅测试test_slugurl_tag()中的例程。slugurl

另请注意,如果更改页面树中页面的位置或更改 slug(在Promote选项卡中定义),那么您slugurl在任何此类更改之前检索的 url 将不再有效。但是,如果您使用的是 Wagtail 2.16+,那么如果您使用该应用程序,则可以自动处理此问题wagtail.contrib.redirects

于 2022-02-21T16:37:48.790 回答