我正在开发一个鹡鸰网站。有些页面具有特定的设计,仅存在于一页上(例如“我们是谁”,带有图片和个人简介列表,“它是如何工作的”,以非常特定的方式集成了一些非常特定的图表,主页页...)。
目前,对于这些页面,我正在每页创建一个模型/模板,但它并不完美:
domain.com/static/who-are-we.html
而不是 domain.com/who-are-we
)Wagtail 有处理这种情况的惯用方法吗?
按照 Dan Hayden 的建议,您可以将
max_count = 1
添加到您的页面模型中,以确保只能创建一个。
我通常对像这样的单例页面(例如合法页面)所做的是将它们添加到SiteSetting。这样,页面只需在 CMS 管理的设置区域中设置一次。
from django.db import models
from wagtail.admin.panels import FieldPanel
from wagtail.contrib.settings.models import BaseSiteSetting, register_setting
@register_setting
class GlobalSettings(BaseSiteSetting):
legal_page = models.ForeignKey("yourapp.LegalPage", on_delete=models.SET_NULL, null=True)
panels = [
FieldPanel("legal_page")
]
{% load wagtailsettings_tags %}
{# legal_page can be empty so consider being defensive! #}
{% if settings.yourapp.GlobalSettings.legal_page %}
{% with settings.yourapp.GlobalSettings.legal_page as legal_page %}
<a href="{{ legal_page.full_url }}">{{ legal_page.title }}</a>
{% endwidth %}
{% else %}
No legal page set
{% endif %}