Представления Django не отображаются в шаблоне
Может кто-нибудь подскажет, что я делаю не так? 1-я функция(all_products) прекрасно отображается в шаблоне, но последние 2 - нет.
models.py
# TABLE BRAND
class Brand(models.Model):
name = models.CharField(max_length = 50)
# TABLE PRODUCT
class Product(models.Model):
title = models.CharField(max_length = 100)
brand = models.ForeignKey(Brand, on_delete = models.CASCADE)
image = models.ImageField(null = False, blank = False, upload_to ="images/",)
price = models.DecimalField(max_digits = 100, decimal_places = 2, )
created = models.DateTimeField(auto_now_add = True )
функции в файле views.py
def all_products(request):
products = Product.objects.all()
return render(request, 'store/home.html', {'products': products})
def newest_products(request):
sixNewestProduct = Product.objects.all().order_by('-created')[:6]
return render(request, 'store/home.html', {'sixNewestProduct': sixNewestProduct})
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.all_products, name= 'all_products'),
path('', views.newest_products, name= 'newest_products'),
path('', views.newest_discount, name= 'newest_discount'),
]
часть шаблона выглядит следующим образом:
{% for new in sixNewestProduct %}
<a href="#" class="">
<div class="newProduct">
<img src="{{new.image.url}}" alt="">
</div>
<h5>{{new.brand.name}}</h5>
<h4>{{new.title}}</h4>
<p>{{new.price}} GNF</p>
</a>
{% endfor %}
Необходимо исправить путь url следующим образом
from django.urls import path
from . import views
urlpatterns = [
path('', views.all_products, name= 'all_products'),
path('newest_products/', views.newest_products, name= 'newest_products'),
path('newest_discount/', views.newest_discount, name= 'newest_discount'),
]
Django сопоставляет запрос с первым встреченным представлением, путь которого совпадает с путем текущего запроса:
from django.urls import path
from . import views
urlpatterns = [
# Django will always match this '' to the view `all_products`
path('', views.all_products, name= 'all_products'),
path('', views.newest_products, name= 'newest_products'),
path('', views.newest_discount, name= 'newest_discount'),
]
Как ответил @Mahammadhusain kadiwala, вам придется добавить разные пути маршрута для каждого представления