更新来自外部 api 源的 django 模型的最佳方法?

Mac*_*chi 1 django python-3.x django-rest-framework

我通过请求 api 源获取数据,然后将其放入我的 django 模型中。然而,数据每天都会更新......那么如何才能更新这些数据而不需要每次都渲染呢?

def index (request):
    session = requests.Session()
    df = session.get('https://api.coincap.io/v2/assets')
    response= df.json()
    coin = response['data']
    final_result = coin.to_dict('records')
    for coin in final_result:
        obj, created = Coincap.objects.update_or_create(
            symbol = coin['symbol'],
            name = coin['name'],
            defaults = {
                'price': coin['priceUsd']
                })
    return render(request, '/home.html/')
Run Code Online (Sandbox Code Playgroud)

现在,/home.html如果我想要更新数据,我必须访问 。然而,我的目标是稍后序列化它并使其成为 REST api 数据,所以我不会再碰 django 模板了。无论如何,它在我更新后每天内部更新一次manage.py runserver

Mac*_*chi 5

对于那些正在寻找示例的人:

from django.core.management.base import BaseCommand
class Command(BaseCommand):
    def handle(self,*args,**kwargs):
        //Your request api here
        for coin in final_result:
            obj, created = Coincap.objects.update_or_create(
                symbol = coin['symbol'],
                name = coin['name'],
                defaults = {
                    'price': coin['priceUsd']})
Run Code Online (Sandbox Code Playgroud)

然后你按照 Nikita 的建议运行 cron 。