Невозможно выполнить запрос API
Я пытаюсь протестировать API из приложения django, чтобы убедиться, что оно работает, но я совершенно не понимаю, как сделать запрос API. Я потратил несколько дней, пытаясь разобраться в этом самостоятельно, но очевидно, что мне нужна помощь, потому что я постоянно получаю ОШИБКИ, такие как TypeError: list indices must be integers or slices, not str
. Это API для создания порядка выбранного элемента.
Вот код:
views.py
def create_order(request):
user = request.user
data = request.data
orderItems = data['orderItems']
if orderItems and len(orderItems) == 0:
return Response({'detail': 'Order item was not provided'}, status=status.HTTP_400_BAD_REQUEST)
else:
# (1) Create order
order = Order.objects.create(
user=user,
paymentMethod=data['paymentMethod'],
#totalPrice=data['totalPrice']
)
# (2) Create shipping address
shipping = ShippingAddress.objects.create(
order=order,
address=data['shippingAddress']['address'],
city=data['shippingAddress']['city'],
postalCode=data['shippingAddress']['postalCode'],
country=data['shippingAddress']['country'],
)
# (3) Create order items adn set order to orderItem relationship
for i in orderItems:
product = Product.objects.get(id=i['product'])
item = OrderItem.objects.create(
product=product,
order=order,
name=product.name,
qty=i['qty'],
price=i['price'],
image=product.image.url,
)
# (4) Update stock
product.countInStock -= item.qty
product.save()
serializer = OrderSerializer(order, many=False)
return Response(serializer.data)
Как мне представить вышеприведенный файл django view.py в формате json для тестирования. Проблема в том, что в приведенном выше файле view.py задействованы различные шаги. Вот как я пытаюсь протестировать его на Postman
{
"order":{"paymentMethod":"monify"},
"shippingAddress": [
{
"address":"2, Benin Lagos Express Road", "city":"Benin", "postalCode":"12345", "country":"Nigeria"
}
],
"orderItems":{
"product": {"name":"Co Amoxiclav", "brand":"GSK", "image":"www.abc.png", "description":"xyz", "price":"200"},
"qty":"2",
"price":"200"
},
"paymentMethod":"monify"
}