Как отобразить название категории на странице списка категорий? - PullRequest
0 голосов
/ 12 июля 2020

Я некоторое время использую Wagtail для своего базового c веб-сайта, но во время пандемии c мне пришлось создать онлайн-версии всех моих курсов - я преподаю в университете - и Я решил сделать это в трясогузке. Это гораздо более надежное решение, чем все, что может предоставить университет. (Я думаю, что многие люди попали в мою ситуацию.) Пока что это было здорово, но я не программист (я преподаю творческое письмо!), И поэтому я немного не в себе в некоторых вещах. Вот одна вещь, с которой мне нужна помощь. У меня есть категории (согласно руководствам Калоба), и у меня есть страницы со списком категорий. Я нажимаю на категорию и получаю страницу, на которой показаны только страницы этой категории. Все идет нормально. Но как мне показать на этих листинговых страницах заголовок с надписью «Отображение страниц в категории X»? Вот что у меня есть в моделях для моего приложения курсов (взято прямо из учебника Калоба по категориям ):

@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 Ответ

1 голос
/ 13 июля 2020

Не уверен, что я что-то упускаю, но если вы хотите сделать текущую категорию доступной для вашего шаблона (той, которая основана на слаге в 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 }}
...