django.core.urlresolvers.NoReverseMatch: Reverse for 'pages-details-by-slug'

17 февраля 2017 г. 1:26

Ошибка django.core.urlresolvers.NoReverseMatch: Reverse for 'pages-details-by-slug' может возникнуть при выполнении метода get_absolute_url() экземпляра класса Page из management команды. Дело в том, что когда вызывается management команда, page ничего не знает об используемом языке (language) и валится в следующем куске кода:

def get_absolute_url(self, language=None, fallback=True):
    if not language:
        language = get_language()  # автоматически не удаётся определить language
    with i18n.force_language(language):
        if self.is_home:
            return reverse('pages-root')
        path = self.get_path(language, fallback) or self.get_slug(language, fallback)
        return reverse('pages-details-by-slug', kwargs={"slug": path})  # и происходит ошибка, так как path не определился

Пример того, как можно установить язык:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from cms.models import Page
from django.core.management.base import BaseCommand
from django.utils.translation import activate


class Command(BaseCommand):
    def handle(self, *args, **options):
        activate('ru')
        
        for page in Page.objects.all():
            url = page.get_absolute_url()

Теперь язык автоматом найдётся методом get_language() в get_absolute_url(), даже если мы не передали аргумент language.

Оцените статью

0 из 5 (всего 0 оценок)

captcha
Отмеченные звёздочкой поля ( * ) являются обязательными для заполнения.

Спасибо за ваш отзыв!

После нажатия кнопки "Отправить" ваше сообщение будет доставлено мне на почту.

Автор статьи

Артём Мальцев

Веб-разработчик, владеющий знаниями языка программирования Python, фреймворка Django, системы управления содержимым сайта Django CMS, платформы для создания интернет-магазина Django Shop и многих различных приложений, использующих эти технологии.

Права на использование материала, расположенного на этой странице https://vivazzi.pro/ru/it/noreversematch-reverse-for-pages-details-by-slug/:

Разрешается копировать материал с указанием её автора и ссылки на оригинал без использования параметра rel="nofollow" в теге <a>. Использование:

Автор статьи: Артём Мальцев
Ссылка на статью: <a href="https://vivazzi.pro/ru/it/noreversematch-reverse-for-pages-details-by-slug/">https://vivazzi.pro/ru/it/noreversematch-reverse-for-pages-details-by-slug/</a>

Больше: Правила использования сайта

Представляю вашему вниманию книгу, написанную моим близким другом Максимом Макуриным: Секреты эффективного управления ассортиментом.

Книга предназначается для широкого круга читателей и, по мнению автора, будет полезна специалистам отдела закупок и логистики, категорийным и финансовым менеджерам, менеджерам по продажам, аналитикам, руководителям и директорам, в компетенции которых принятие решений по управлению ассортиментом.

Комментарии: 0

Вы можете оставить комментарий как незарегистрированный пользователь.

Но зарегистрировавшись, вы сможете:

  • получать оповещения об ответах
  • просматривать свои комментарии
  • иметь возможность использовать все функции разработанных сервисов

Для комментирования от своего имени войдите или зарегистрируйтесь на сайте Vuspace

Отправить

На данный момент нет специального поиска, поэтому я предлагаю воспользоваться обычной поисковой системой, например, Google, добавив "vivazzi" после своего запроса.

Попробуйте

Выберите валюту для отображения денежных единиц