我正在尝试在我网站上的所有页面中包含一个可通过夹层管理员编辑的页面。我通读了夹层文档和源代码,但无法弄清楚如何做到这一点。
从文档中,我认为我可以将我的页面作为额外的上下文传递,例如:
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/