alexhouse
@alexhouse
Full Stack Web Developer Python and Django

Вывести товары на главную страницу в Django-Oscar?

При использовании Django-Oscar появилась явная проблема с выводом списка товаров на главную страницу.

Стандартный метод не срабатывает из-за защиты проверки сессии (request.strategy.fetch_for_product(product)):
Когда я выводу товары в каталоге отлично все работает. Когда пытаюсь сделать это для главной страницы либо список пустой либо вылетает ошибка.

Если использовать способ из документации (вставка блока содержимого) все время вылетает ошибка:
'str' object has no attribute 'strategy'

Ошибка в этом коде, который проверяется сессию:
from django import template

register = template.Library()


@register.assignment_tag
def purchase_info_for_product(request, product):
    if product.is_parent:
        return request.strategy.fetch_for_parent(product)

    return request.strategy.fetch_for_product(product)


@register.assignment_tag
def purchase_info_for_line(request, line):
		return request.strategy.fetch_for_line(line)


Просьба подсказать рабочие примеры или обходные пути.

UPD: Ошибка оказалась в версии Django=1.10.5. После отката на версию 1.9.12 ошибка исчезла.
Товары выводятся на главную через блок автоматический список товаров.
  • Вопрос задан
  • 374 просмотра
Решения вопроса 1
alexhouse
@alexhouse Автор вопроса
Full Stack Web Developer Python and Django
Пока что нашел такое ВРЕМЕННОЕ РЕШЕНИЕ. Через app.py переопределить url домашней страницы заместив его каталогом. В таком варианте товары показывает без каких-либо ошибок.

Но появилась другая проблема. Обновление количества товара в корзине вызывает 500 error со ссылкой на этот участок кода:
def purchase_info_for_line(request, line):
return request.strategy.fetch_for_line(line)

Проверка ошибки показывает, что в строке не передается strategy.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы