Что я должен сделать, чтобы иметь возможность видеть то, что я разместил в категории?

Когда я размещаю некоторый 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 >&copy 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'),

Надеюсь, это поможет.

Вернуться на верх