Что я должен сделать, чтобы иметь возможность видеть то, что я разместил в категории?
Когда я размещаю некоторый json, который содержит категорию следующим образом:
[ { "id": 152, "image": "https://a", "description": "J t", "цена": "8.70 USD", "купить": "https:// 6d7", "категория": 1 }, { "id": 153, "image": "https://", "description": "эльф", "цена": "65", "купить": "https://s.c D", "категория": 1 } ]
в шаблонах я их не вижу.
html:
{% load static %}
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="{% static 'main.css' %}">
<div class="header">
<img src="static/logo.png">
</div>
</head>
<body style="background-color: #56454F;">
<div class="grid">
{% for i in p%}
<div class='card'>
<img src="{{i.image}}"></img>
<p id="id">{{i.description}}</p>
<a href="{{i.buy}}" target='_blank' rel='noopener noreferrer'>
<button><span class="price"> ${{i.price}}</span> buy</button>
</a>
</div>
{%endfor%}
</div>
<div class="footer">
<h1 >© All rights reserved</h1>
</div>
</body>
</html>
модели:
from django.db import models
class category(models.Model):
name=models.CharField(max_length=255, db_index=True)
def __str__(self):
return self.name
class product(models.Model):
category = models.ForeignKey(category, related_name='products',on_delete=models.CASCADE)
image=models.CharField(max_length=500)
description=models.CharField(max_length=500)
price=models.CharField(max_length=50)
buy=models.CharField(max_length=100)
просмотров:
class productviewset(viewsets.ModelViewSet):
queryset=product.objects.all()
serializer_class = productSerializer
def create(self, request):
serialized = productSerializer(data=request.data, many=True)
if serialized.is_valid():
serialized.save()
return Response(serialized.data, status=status.HTTP_201_CREATED)
return Response(serialized._errors, status=status.HTTP_400_BAD_REQUEST)
@action (detail=False , methods=['post'])
def delete(self,request):
product.objects.all().delete()
return Response('success')
def home(request):
return render(request,'home.html',{'p':category.objects.all()})
def foods(request):
return render(request,'foods.html',{'p':category.objects.all()})
Я не знаю, что я должен написать в {'p':category.objects.all()}
, чтобы иметь возможность поместить некоторые данные из определенной категории в этот html-код.
Что мне нужно сделать, чтобы иметь возможность видеть, что я разместил в категории?
Если вы хотите передать эти данные в домашний шаблон, вы можете сделать это просто:
def home(request):
p = Product.objects.all()
context = ['p':p]
return render(request,'home.html', context)
В шаблоне home вы можете передать все поля Product с помощью:
<div class="grid">
{% for i in p%}
<div class='card'>
<img src="{{i.image}}"></img>
<p id="id">{{i.description}}</p>
<p>{{i.category}}</p>
<a href="{{i.buy}}" target='_blank' rel='noopener noreferrer'>
<button><span class="price"> ${{i.price}}</span> buy</button>
</a>
</div>
{%endfor%}
def foods(request, pk):
i = get_objects_or_404(Product, id=pk)
context ={'i':i}
return render(request, 'food.html', context)
Так в шаблонах продуктов питания вы можете получить свою категорию по:
<p>{{i.category}}</p>
В ваших урлах:
path('food<int:pk>/', views.foods. name='Food'),
Надеюсь, это поможет.