django - 如何将带有给定 slug 的夹层页面包含到基本模板中?

标签 django 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 加载特定页面?

最佳答案

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

# 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 %}

如果您知道一种更简单的方法来做到这一点,我很想听听您的解决方案!

关于django - 如何将带有给定 slug 的夹层页面包含到基本模板中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16600625/

相关文章:

django - 在 Django 中使用 Polymer

python - 使用 Django Rest Framework 访问 'ManyRelatedManager' 上的不同字段?

python - 如何获取()这个属于 userprofile.team 的模型

python - 安装 Pillow,获取 -Wunused-command-line-argument-hard-error-in-future

python - Django Mezzanine - 如何在每页有一个自定义模板?

python - 如果满足某些条件,如何继承django中的模板?

jquery - Django/Ajax - 如何根据选择过滤和显示结果

django - 如何将自定义模板页面添加到夹层?

python - 如何使夹层用户电子邮件不可更新?

python - 夹层的菜单页