0

我试图弄清楚如何在 Django 中获取来自 Kraken API 的字符串序列、整数和整数或数字数组。我在这里浏览了其他示例并创建了下面的代码。我的代码字符串正确返回值,但是整数数组返回错误。如何解决此错误并控制此 API 内容的每个部分?

views.py 我标记了“返回 OK”的变量,而没有正确返回的变量是“NOT OK”

from django.shortcuts import render
from meal_app.models import Kraken
import requests

def get_krakens(request):
    all_krakens = {}
    url ='https://api.kraken.com/0/public/AssetPairs' 
    response = requests.get(url)
    data = response.json()

    for i in data['result'].values():
        kraken_data = Kraken(
            altname = i['altname'], # string return OK
            wsname = i['wsname'], # string return OK
            aclass_base = i['aclass_base'], # string return OK
            base = i['base'], # string return OK
            aclass_quote = i['aclass_quote'], # string return OK
            quote = i['quote'], # string return OK
            lot = i['lot'], # string return OK
            pair_decimals = i['pair_decimals'], # integer return OK
            lot_decimals = i['lot_decimals'], # integer return OK
            lot_multiplier = i['lot_multiplier'], # integer return OK
            # leverage_buy = i['leverage_buy'], # Array of integers NOT OK
            # leverage_sell = i['leverage_sell'], # Array of integers NOT OK
            fees = i['fees'], # Array of Array of integers or numbers NOT OK
            # fees_maker = i['fees_maker'], # Array of Array of integers or numbers NOT OK
            fee_volume_currency = i['fee_volume_currency'], # string return OK
            margin_call = i['margin_call'], # integer return OK
            margin_stop = i['margin_stop'], # integer return OK
            # ordermin = i['ordermin'] # string NOT OK
            )
        kraken_data.save()
        all_krakens = Kraken.objects.all().order_by('-id')

    return render (request, 'meals/kraken.html', { "all_krakens": 
    all_krakens} )

作为返回错误的示例,我取消注释可变费用并返回以下错误: 在此处输入图像描述

我该如何解决这个错误?您的帮助将非常有价值。

注意:当我注释掉返回错误的变量时,我的 Django REST 响应是: 在此处输入图像描述

Kraken 文档在这里:kraken AssetPair API 文档

4

1 回答 1

0

我想分享我发现解决上述问题的方法和研究:

案例 1 - API 返回一个列表而不是一个数字。在文件views.py中,我通过包含一个索引更改了变量“fees”,该索引允许我在Kraken API的嵌套“数字数组”中收集来自第二层的信息:

fees = i["fees"][1][1]

API 响应架构:

在此处输入图像描述

案例 2 - 错误的模型格式在 models.py 中,我将变量类从“IntegerField”更改为“FloatField”,允许我正确返回一个浮点数:

ordermin = models.FloatField(null=True, blank=True, default=None)

来源:https ://docs.djangoproject.com/en/3.2/ref/models/fields/#django.db.models.FloatField

于 2021-11-12T13:06:45.997 回答