Django显示来自json

时间:2019-02-04 17:14:26

标签: json django model fetch

我想在我的网站上显示加密货币价格。因此,我从coinmarketcap.com解析了最新的BTC / USD价格 现在我想在列表中显示它们,但我首先不知道谁将json中的符号保存到我的数据库中,其次我该如何正确显示我的视图。目前,我只保存key:price_usd的值,其中key是货币名称。

views.py

def crypto_ticker(request):
        list_prices = CryptoPrices.objects.get_queryset().order_by('-pk')
        paginator = Paginator(list_prices, 100)  # Show 100 prices per page
        page = request.GET.get('page')
        price = paginator.get_page(page)
        return render(request, 'MyProject/crypto_ticker.html', {'price': price})

urls.py

url(r'^crypto_ticker/$', MyProject_views.crypto_ticker, name='crypto_ticker'),

models.py

class CryptoPrices(models.Model):
    symbol = models.CharField(max_length=10)
    key = models.CharField(max_length=30)
    value = models.CharField(max_length=200)

芹菜更新任务:

@periodic_task(run_every=(crontab(minute='*/1')), name="Update Crypto rate(s)", ignore_result=True)
def get_exchange_rate():
    api_url = "https://api.coinmarketcap.com/v1/ticker/?limit=100"
    try:
        exchange_rates = requests.get(api_url).json()
        for exchange_rate in exchange_rates:
            CryptoPrices.objects.update_or_create(key=exchange_rate['id'],
                                                  defaults={'value': round(float(exchange_rate['price_usd']), 3)}
                                                  )
        logger.info("Exchange rate(s) updated successfully.")
    except Exception as e:
        print(e)

1 个答案:

答案 0 :(得分:0)

肯定只是添加

symbol= exchange_rate['symbol']

对您的update_or_create起作用吗? 来自coinmarketcap的JSON将其设置为字典中的键,除非您想要它们使用的图像? 在这种情况下,您将必须自己保存该图像的副本,创建从符号文本到图像本身的映射,并在html输出上设置其格式。