#python #django
#python #django
Вопрос:
Я работаю над проектом электронной коммерции Django, и я следил за учебным пособием, а затем решил переделать его самостоятельно без учебника, но я застрял в небольшой проблеме, логику которой я не понимаю.
Когда пользователь добавляет товар в корзину, я хочу, чтобы он отражал нет. товаров, которые отображаются на значке корзины на панели навигации, но я получаю Invalid filter: 'cart_item_count'
Вот мой товар model.py
class Item(models.Model):
title = models.CharField(max_length=100)
image = models.ImageField(blank=False, upload_to=upload_design_to)
class OrderItem(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
ordered = models.BooleanField(default=False)
item = models.ForeignKey(Item, on_delete=models.CASCADE)
quantity = models.IntegerField(default=1)
variation = models.ManyToManyField(Variation)
Имя приложения store
, так что вот что я сделал в учебнике
Добавлена новая папка в приложении с именем templatetags
и внутри папки тегов шаблона, создан файл с именем cart_template_tags
и вот что внутри него:
from django import template
from store.models import Order
register = template.Library()
@register.filter
def cart_item_count(user):
if user.is_authenticated:
qs = Order.objects.filter(user=user, ordered=False)
if qs.exists():
return qs[0].items.count()
return 0
Мой вопрос в том, как мне исправить эту ошибку, и я хочу понять логику использования cart_item_count
в качестве фильтра?
Есть ли более простой способ сделать это?
Спасибо
Комментарии:
1. попробуйте перезапустить сервер.
2. @ha-neul ничего не произошло та же ошибка
3. есть ли у вас{% load cart_template_tags %} в вашем шаблоне?
4. @ha-neul да, вы можете добавить это в качестве ответа, спасибо
Ответ №1:
Согласно документу django о пользовательских тегах шаблонов, вам необходимо
- добавьте
{% load cart_template_tags %}
свой шаблон. - перезапустите сервер, чтобы заставить пользовательские теги работать.