在 slug 的末尾添加日期或数字



如果 slug 已经存在,我正在尝试在页面模式的末尾添加一个数字或发布日期。 我找到了 RoutablePageMixin 的可能解决方案,但不太确定如何处理它,因为它更改的是 URL 而不是 slug 本身。

这是我到目前为止得到的,但它的接缝不起作用......

class BlogPage(HeadlessPreviewMixin, Page):
#...
def full_clean(self, *args, **kwargs):
# first call the built-in cleanups (including default slug generation)
super(BlogPage, self).full_clean(*args, **kwargs)
# now make your additional modifications
if not self.slug.startswith('awesome'):
self.slug = "awesome-%s" % self.slug

我相信你想要实现的目标可以在模型的.save()上完成。

models.py

import datetime as dt

class BlogPage(...):
def save(self, **kwargs):
now = dt.datetime.now()
if self.slug:
self.slug = f"{self.slug}-{now.isoformat()}"
super().save(self, **kwargs)

或者你可以这样做...

views.py

class BlogPage(RoutablePageMixin, Page):
# Multiple routes!
@route(r'^$')
@route(r'^year/(d+)/$')
def events_for_year(self, request, year=None):
...

最新更新