Yue*_*Hui 6 python django django-rest-framework
我正在尝试使用 django Rest 框架编写用于将产品添加到购物车的 API。我写了一个简单的serializer.py 和view.py。
模型.py:
class Product(models.Model):
title = models.CharField(max_length=100,unique=True)
description = models.TextField()
image_url = models.URLField(max_length=200)
price = models.DecimalField(max_digits=8,decimal_places=2)
date_available = models.DateField
class LineItem(models.Model):
product = models.ForeignKey(Product)
unit_price = models.DecimalField(max_digits=8,decimal_places=2)
quantity = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)
序列化程序.py
class LineItemSerializer(serializers.ModelSerializer):
class Meta:
model = LineItem
fields = ('product', 'unit_price', 'quantity')
def product(self, instance):
return instance.product.title
Run Code Online (Sandbox Code Playgroud)
视图.py
class RESTforCart(APIView):
def post(self, request, *args, **kwargs):
#print request.POST['product']
product = Product.objects.get(id=request.POST['product'])
cart = request.session['cart']
cart.add_product(product)
request.session['cart'] = cart
lists=request.session['cart'].items
serializer = LineItemSerializer(lists,many=True)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def get(self, request, *args, **kwargs):
lists=request.session['cart'].items
serializer = LineItemSerializer(lists,many=True)
return Response(serializer.data)
Run Code Online (Sandbox Code Playgroud)
网址.py
(r'^shoppinglists2/$', RESTforCart.as_view()),
Run Code Online (Sandbox Code Playgroud)
[我的可浏览视图如下所示:只有内容字段。没有单价和数量字段]
from rest_framework.renderers import (
HTMLFormRenderer,
JSONRenderer,
BrowsableAPIRenderer,
)
class CustomerApi(APIView):
serializer_class = CustomerSerializer
renderer_classes = (BrowsableAPIRenderer, JSONRenderer, HTMLFormRenderer)
..... give whatever methods here
Run Code Online (Sandbox Code Playgroud)
您必须添加serializer_class = <your serializer>才能在可浏览的 api 中显示表单
您的可浏览 api 看起来没问题。您必须将 JSON 对象插入到内容字段中并将其发布到 api。您的 JSON 可能如下所示:
{
"product": 1,
"unit_price": "22",
"quantity": 5
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2156 次 |
| 最近记录: |