首页 > 解决方案 > Django Rest Framework:如何从具有特定对象 ID 的数据库中呈现数据

问题描述

我正在 Django Rest Framework 中构建一个项目,用户可以在其中查看鞋子列表或鞋子的详细信息。当我输入 url 以列出它正确显示的所有鞋子时,当我输入带有对象 id 的 url 时,HTML 什么也不显示。

无显示

这是我的模型

class shoes_brand(models.Model):
    brand = models.CharField(max_length=15)
    class Meta:
        db_table = 'Brand'
        verbose_name='Brand'
        verbose_name_plural = 'Brands'
    def __str__(self):
        return self.brand
class shoe(models.Model):
    name = models.CharField(max_length=15)
    foot_size = models.DecimalField(max_digits=3, decimal_places=1)
    price = models.DecimalField(max_digits=4, decimal_places=2)
    quanity = models.DecimalField(max_digits=3, decimal_places=0)
    available = models.BooleanField(default=False)
    brand = models.ManyToManyField(shoes_brand)

    def __str__(self):
        return self.name

我的观点

from .models import shoe, shoes_brand
from rest_framework.renderers import TemplateHTMLRenderer
from rest_framework.response import Response
from rest_framework.views import APIView

class list_object(APIView):
    renderer_classes = [TemplateHTMLRenderer]
    template_name = 'rest/list.html'
    def get(self, request):

        queryset = shoe.objects.all()
        context = {
            'object' : queryset
        }
        print(context)
        return Response(context)

class detail_object(APIView):
    renderer_classes = [TemplateHTMLRenderer]
    template_name = 'rest/detail.html'
    def get(self, request ,pk):
        queryset = shoe.objects.get(pk=pk)
        context = {
        'object' : queryset
        }
        print(context)
        return Response(context)

我的网址

from django.urls import path
from .views import list_object, detail_object

app_name = 'shoes_app'
urlpatterns = [
    path('list/', list_object.as_view(), name="List_all"),
    path('detail/<int:pk>/', detail_object.as_view(), name="Detail_object"),
]

我的序列化器

class ShoeSerializer(serializers.ModelSerializer):
    class Meta:
        model = shoe
        fields = '__all__'
class ShoesBrandSerializer(serializers.ModelSerializer):
    class Meta:
        model = shoes_brand
        fields = '__all__'

我的模板templates/rest/list.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>All shoes</title>
</head>
<body>
    {% for index in object %}
        <li>Shoe: {{ index.name }}</li>
        <li>Foot size: {{ index.foot_size }}</li>
        <li>Price: {{ index.price }}</li>
        <li>Quanity: {{ index.quanity }}</li>
        <li>In-stock: {{ index.available }}</li>
    {% endfor %}
</body>
</html>

还有我的模板templates/rest/detail.html


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Detail/title>
</head>
<body>  
        <li>{{ object.name }}</li>
        <li>{{ object.foot_size }}</li>
        <li>{{ object.price }}</li>
        <li>{{ object.quanity }}</li>
        <li>{{ object.available }}</li>
</body>
</html>

任何帮助都会很棒,谢谢

标签: djangodjango-rest-framework

解决方案


推荐阅读