4

我正在尝试在我网站的所有页面中包含一个可通过夹层管理员编辑的页面。我通读了 Mezzanine 文档和源代码,但无法弄清楚如何做到这一点。

从文档中,我认为我可以将我的页面作为额外的上下文传递,例如:

mezzanine.pages.views.page(request, slug, template=u'pages/page.html', extra_context={'mypage':<get_page_by_its_slug>})

但是文档说额外的上下文是 mezzanine.pages.middleware.PageMiddleware 对象,它设置了请求中的 slug。

我需要编写上下文处理器来执行此操作吗?如何通过其 slug 加载特定页面?

4

1 回答 1

8

以防万一这有助于那里的人,我创建了一个上下文处理器来解决这个问题:

# context_processors.py
from mezzanine.pages.models import Page

def featured(request):
    # editable page, get by ID or slug or title...
    featured_page = Page.objects.get(id=49)
    return {'featured_page': featured_page}

将上下文处理器添加到我的 settings.py 中:

TEMPLATE_CONTEXT_PROCESSORS = (
   "django.contrib.auth.context_processors.auth",
   ## ...etc...,
   "myapp.context_processors.featured",
)

并将特色内容包含在 base.html 模板中:

{% block right_panel %}
<div>
    {% editable featured_page.richtextpage.content %}
        {{ featured_page.richtextpage.content|richtext_filter|safe }}
        {% endeditable %}
</div>
{% endblock %}

如果您知道执行此操作的更简单方法,我很想听听您的解决方案!

于 2013-05-17T18:04:32.580 回答