django - 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>
任何帮助都会很棒,谢谢
解决方案
推荐阅读
- php - PHP - 在循环中使用'file_put_contents'
- c++ - I/O 中的内存中字符串
- reactjs - 使用开发服务器时,Webpack 不向 index.html 发送文件
- createjs - EaselJS - 在数据库中存储形状图形
- angular - 如何通过 Firebase 从 Angular Firestore 中删除数据
- javascript - Dropzone Chunking chunksUploaded 未被调用
- ruby-on-rails - UncaughtThrowError:未捕获的抛出:app_exception
- javascript - React Native 中的搜索栏出现故障
- python - 使用tensorflow创建数据集时需要返回函数对象是什么
- jquery - Spring boot & Jquery 415(不支持的媒体类型)