如何在类别列表页面上显示类别名称?

时间:2020-07-12 19:28:11

标签: categories wagtail

我在基本网站上使用Wagtail已有一段时间了,但是在大流行期间,我必须创建所有课程的在线版本-我在大学任教-我决定这样做这在Wa。这是比大学所能提供的任何解决方案都要强大的解决方案。 (我认为很多人都处于这种情况。)到目前为止,情况非常好,但是我不是程序员(我在教创意写作!),所以我在一些事情上有些发out。这是我可以帮助的一件事。我有类别(按照Kalob的教程),并且有类别列表页面。我单击一个类别,然后得到一个页面,仅显示该类别中的页面。到现在为止还挺好。但是,如何在这些列表页面上显示标题为“显示X类页面”的标题?这是我的课程应用程序模型中的内容(直接取自Kalob's tutorial on categories):

@route(r"^category/(?P<cat_slug>[-\w]*)/$", name="category_view")
def category_view(self, request, cat_slug):
    """Find courses based on a category."""
    context = self.get_context(request)

    try:
        # Look for the course category by its slug.
        category = CourseCategory.objects.get(slug=cat_slug)
    except Exception:
        category = None

    if category is None:
        # This is an additional check.
        pass

    context["courses"] = (
        CoursePage.objects.live().public().filter(
            categories__in=[category])
    )

这是这些类别页面的模板中的内容:

                   <ul class="menu-list">
                        {% for cat in categories %}
                        <li>
                            <a href="{% routablepageurl page "category_view" cat.slug %}">
                                {{ cat.name }}
                            </a>
                        </li>
                        {% endfor %}
                    </ul>
           

按预期,以上显示了所有类别。如何仅显示所选页面的类别,以便可以将其放在页面标题中?我已经尝试了一些方法,但是正如我所说的,我在这里没有深度,我只是在猜测和谷歌搜索-到目前为止,没有成功。我知道很多使之工作的方法。

1 个答案:

答案 0 :(得分:1)

不确定我是否缺少某些内容,但是如果您想使当前类别对您的模板可用(基于URL中的段的类别)。您可以将其添加到上下文中以使其在模板中可用,类似于添加courses的方式。

示例

my_model.py
@route(r"^category/(?P<cat_slug>[-\w]*)/$", name="category_view")
def category_view(self, request, cat_slug):
    """Find courses based on a category."""
    # ... rest of the code from above

    context["courses"] = (
        CoursePage.objects.live().public().filter(
            categories__in=[category])
    )
    context["current_category"] = category
my_template.html
<h2>{{ page.title }} - {{ current_category }}