Цикл for, Page not found (404) - Python

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Есть два models -
Листинг программы
  1. class Category(models.Model):
  2. name = models.CharField(max_length=255, verbose_name='Название категории', default='')
  3. alias = models.SlugField(verbose_name='Alias категории', default='')
  4. image = models.ImageField(null=True, blank=True, upload_to='image/', verbose_name='Изображение')
  5. class Meta:
  6. verbose_name = "Категория"
  7. verbose_name_plural = "Категории"
  8. def __str__(self):
  9. return '%s' % self.name
Листинг программы
  1. class Items(models.Model):
  2. name = models.CharField(max_length=15, verbose_name='Название товара', default='')
  3. price = models.IntegerField(default=0, verbose_name='Цена')
  4. # image = models.CharField(max_length=255, verbose_name='Картинка', default='')
  5. image = models.ImageField(null=True, blank=True, upload_to='image/', verbose_name='Изображение')
  6. alias = models.SlugField(verbose_name='Alias товара', default='')
  7. category = models.ForeignKey(Category, default=None, blank=True, null=True)
  8. class Meta:
  9. verbose_name = "Товар"
  10. verbose_name_plural = "Товары"
  11. def __str__(self):
  12. return 'Товар %s' % self.name
Есть views -
Листинг программы
  1. def products(request, alias):
  2. try:
  3. product = Items.objects.get(alias=alias)
  4. title = product.name
  5. except:
  6. raise Http404("Объект не найден")
  7. context = {
  8. 'product': product,
  9. 'title': title,
  10. }
  11. return render(request, 'product/product.html', context)
  12.  
  13. def get_category(request, alias):
  14. try:
  15. category = Category.objects.get(alias=alias)
  16. products = Items.objects.filter(category=category)
  17. title = category.name
  18. except:
  19. raise Http404('Объекты не найден')
  20. context = {
  21. 'products': products,
  22. 'category': category,
  23. 'title': title,
  24. }
  25. return render(request, 'popular/popular.html', context)
  26.  
  27. def popular(request):
  28. try:
  29. title = 'Популярные'
  30. products = Items.objects.all()
  31. category = Category.objects.get()
  32. except:
  33. raise Http404('Объекты не найден')
  34. context = {
  35. 'products': products,
  36. 'category': category,
  37. 'title': title,
  38. }
  39. return render(request, 'popular/popular.html', context)
urls -
Листинг программы
  1. url(r'^admin/', admin.site.urls),
  2. url(r'^$', views.popular, name='popular'),
  3. url(r'^product/(?P<alias>[^/]+)', views.products, name='product'),
  4. url(r'^category/(?P<alias>[-\w]+)/$', views.get_category, name='get_category'),
Ну и шаблон, в котором, собственно и проблема -
Листинг программы
  1. <ul>
  2. {% for category in get_category %}
  3. <li>
  4. <a href="{% url 'get_category' category.alias %}">
  5. <img src="{{ MEDIA_URL }}{{ category.image.url }}" alt="">
  6. <ctgname>{{ category.name }}</ctgname>
  7. </a>
  8. </li>
  9. {% endfor %}
  10. </ul>
Вообщем проблема заключается в том, что когда добавляю цикл for то выдаёт ошибку - Page not found (404), shop.views.popular. Но если я ввожу category/alias(в смысле из БД) то всё фильтрует.

Решение задачи: «Цикл for, Page not found (404)»

textual
Листинг программы
  1. def products(request, alias):
  2.     product = Items.objects.get(alias=alias)
  3.     title = product.name
  4.  
  5.     context = {
  6.         'product': product,
  7.         'title': title,
  8.     }
  9.  
  10.     return render(request, 'product/product.html', context)
  11.  
  12.  
  13. def get_category(request, alias):
  14.  
  15.     category = Category.objects.filter(alias=alias)
  16.     products = Items.objects.filter(category=category)
  17.     title = category.name()
  18.  
  19.     context = {
  20.         'products': products,
  21.         'category': category,
  22.         'title': title,
  23.     }
  24.     return render(request, 'popular/popular.html', context)
  25.  
  26.  
  27. def popular(request, alias):
  28.     title = 'Популярные'
  29.     products = Items.objects.all()
  30.     category = Category.objects.filter(alias=alias)
  31.  
  32.     context = {
  33.         'products': products,
  34.         'category': category,
  35.         'title': title,
  36.  
  37.     }
  38.     return render(request, 'popular/popular.html', context)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.286 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы