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 オブジェクトであり、リクエストからスラッグを設定します。

これを行うには、コンテキスト プロセッサを作成する必要がありますか? スラッグによって特定のページをどのようにロードしますか?

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 に答える