Закрыть

Для эффективной работы на сайте используются cookie и обработка персональных данных. Пользуясь этим сайтом, вы соглашаетесь с правилами использования сайта. Подробнее

Цитата дня

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 оценок)

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

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

Автор статьи

Права на использование данной статьи, расположенной на настоящей странице http://vivazzi.ru/it/noreversematch-reverse-for-pages-details-by-slug/:

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

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

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

Вам нужно саморазвиваться или вы хотите зарабатывать деньги?

Или вы ищите хорошие IT сервисы или книги? Сохраните свое время и взгляните на мою подборку рекомендаций, которыми постоянно пользуюсь.
Посмотреть рекомендации

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

Вы можете оставить комментарий как незарегистрированный пользователь. Но, зарегистрировавшись, вы сможете получать оповещения об ответах, а также иметь доступ к своему личному аккаунту для просмотра своих комментариев.

Чтобы оставить комментарий от своего имени войдите или зарегистрируйтесь обычным способом или через социальные сети:

Отправить

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

Попробуйте