Django Wagtail CMS slugurl и pageurl не работают - ссылка возвращает «Нет»

Я создаю свой третий сайт Wagtail CMS (v.1.8), но так и не смог разобраться с тегами slugurl и pageurl для создания внутренних ссылок и просто жестко закодировал все ссылки, хотя жесткое кодирование идет вразрез с моим рабочим процессом. Может кто-нибудь, пожалуйста, помогите мне. И да, я добавил {% load wagtailcore_tags %} на свою страницу.

В демонстрационных целях я собираюсь использовать очень простую модель, которая даст моему клиенту шаблон только с заголовком и телом в качестве одного из шаблонов их страниц. Страница удачно называется StandardPage(Page), а шаблон — standard_page.html. Я создал страницу about и хочу указать ссылку на страницу в верхнем и нижнем колонтитулах. Я знаю, что могу жестко закодировать это; но это не то, что я хотел бы сделать.

Я пробовал {% slugurl page.about %}, но ссылка возвращает None - я даже пробовал {% slugurl standardpage.about %}, думая, что что-то упустил, но, конечно, он также возвращает None.

Я всегда использовал именованные маршруты во всех своих проектах Django, и неспособность понять это сводит меня с ума.

Вот моя модель для справки. Спасибо.

class StandardPage(Page):
    body = RichTextField(blank=True)

    search_fields = Page.search_fields + [
        index.SearchField('title'),
        index.SearchField('body'),
    ]

    class Meta:
        verbose_name = 'Standard Page - No Image Placement'

    content_panels = Page.content_panels + [
        FieldPanel('body', classname="full"),
    ]

person Charles Smith    schedule 06.01.2017    source источник


Ответы (1)


{% slugurl page.about %} будет искать поле с именем about на вашей текущей странице — это не удастся, потому что поля с таким именем нет.

Если вы хотите сослаться на страницу с слагом «о нас», используйте {% slugurl 'about' %}. (Тем не менее, вы должны понимать, что на самом деле это не сильно отличается от жесткого кодирования URL-адреса... если вы беспокоитесь о жестком кодировании, потому что редактор может случайно переименовать страницу и сломать ссылку, тогда slugurl не будет защитить вас от этого.В конце концов, вы должны доверять своим редакторам, чтобы они не сделали ничего глупого!)

person gasman    schedule 06.01.2017
comment
Это сработало. Я понимаю, что slugurl ничем не отличается от жесткого кодирования, но я привык использовать теги URL, и их использование, по крайней мере, удовлетворит мое обсессивно-компульсивное расстройство :) Спасибо. - person Charles Smith; 06.01.2017