Трясогузка - сделанный на заказ слаг, но страница, не обслуживающая его - PullRequest
0 голосов
/ 25 декабря 2018

Я сделал пользовательский слаг, потому что слаг по умолчанию не отвечает моим потребностям, и уже установил url_path с новым слагом.Но страница по-прежнему работает со слагом по умолчанию.

Я уже установил url_path со следующим кодом:

def set_url_path(self, parent):
    super().set_url_path(self)
    if parent:
        self.url_path = parent.url_path + self.custom_slug + '/'
    return self.url_path

Но когда я публикую страницу, она все равно возвращает страницусо значением слага по умолчанию.Я думал, что трясогузка обслуживает страницу на url_path.Какие другие методы или переменные мне нужно переопределить, чтобы страница отображалась в моем настраиваемом слаге?

1 Ответ

0 голосов
/ 27 декабря 2018

Вы не можете переключиться на какое-то другое поле, кроме слаг.Поле slug используется во всем Wagtail для поиска URL-адресов, запросов и предоставления правильной страницы.

Вы можете программно установить значение slug на что-то другое.Определение Page.slug:

slug = models.SlugField(
    verbose_name=_('slug'),
    allow_unicode=True,
    max_length=255,
    help_text=_("The name of the page as it will appear in URLs e.g 
                 http://example.com/blog/[my-slug]/")
)

Поле принимает символы в кодировке Unicode.

Вы должны переопределить Page._get_autogenerated_slug, Page.full_clean и Page.clean.Измените способ обработки slug и примите его по своему усмотрению.

Обратите внимание, что вы можете использовать другое поле, например my_custom_slug, в качестве ввода и использовать это значение в своих пользовательских методах.Например: self.my_custom_slug.Однако окончательный результат должен быть сохранен в поле slug.

Вы можете удалить поле slug из панелей содержимого, чтобы удалить его из пользовательского интерфейса администратора.

Наконец, slug имеетсоблюдать https://tools.ietf.org/html/rfc1738

...