试图只用摇尾
Page
对于nav结构,我声明了以下内容,以便在需要时呈现链接,而不是页面url:
class Node(Page):
class Meta:
verbose_name = 'Node (no content or link)'
link = models.CharField(max_length=255, default='', blank='True', help_text='Optional. Leave blank if serving as a parent page')
content_panels = Page.content_panels + [
FieldPanel('link')
]
def get_url(self, **kwargs):
if self.link != '':
return self.link
else:
return super().get_url(self, **kwargs)
在模板中,我尝试了这两种方法
{{ item.url }}
和
{{ item.specific.url }}
哪里
item
是页面树中正在迭代的项。Wagtail定义的项目url
Page.get_url()
函数始终被渲染,而
def get_url()
我已经定义了永远不会被处决。
我知道Wagtail菜单,但我试图在这个项目中不具有另一种依赖性,所以除了上述是否是最好的架构之外,我还缺少什么来让它工作呢?
为了跟进,我一直在跟进
these instructions
,并在
class Node(Page)
型号I现在有以下替代品:
def get_url
:
def get_url_parts(self, *args, **kwargs):
site_id, root_url, page_path = super().get_url_parts(*args, **kwargs)
# return an alternative page_path if link has a value
if self.link.strip() != '':
page_path = self.link
return site_id, root_url, page_path
我发现我仍然需要使用URL呈现页面
item.specific.get_url
.
item.url
这行不通。