If you need to generate a new element (a dictionary for example) from known Json, it may help you create a serializer.
With a serializer, you can for example validate that a json comes with a certain structure or adapt and take from the json known values and generate a new structure.
# serializers.py
from rest_framework import serializers
class MiDataSerializer(serializers.Serializer):
mi_var1 = serializers.IntegerField(required=True, source='var1')
mi_var2 = serializers.CharField(default='texto', source='var2')
mi_var3 = serializers.JSONField(default=None, source='var3')
mi_var4 = serializers.BooleanField(default=False, source='var4')
# con la linea siguiente puedes obtener una variable con nombre compuesto
mi_var5 = serializers.CharField(required=True, source='Nombre:raro-ext2:status')
# con la linea siguiente puedes obtener el valor especifico de una variable dentro de otra estructura
mi_var6 = serializers.CharField(required=False, source='padre.hijo1.hijo2')
# mi_archivo.py
from .serializers import MiDataSerializer
...
data_desde_api = metodo_que_trae_los_datos()
# aqui podrías por ejemplo validar tu data
if data_desde_api.is_valid():
pass
# puedes obtener y serializar múltiples registros si la respuesta es un array de objetos
mi_data = MiDataSerializer(data_desde_api, many=True)
# puedes obtener un sólo registro
mi_data = MiDataSerializer(data_desde_api)
...
Suppose that the api returns the next Json
{
...
'var1': 100,
'var2': 'hola',
'var4': 1,
'Nombre:raro-ext2:status': 'a1s2-d34g-g4as-da34',
'padre': {
'hijo1': {
'hijo2': 'valor-123'
}
}
...
}
Once you have passed through the serializer, you will have your object (dictionary):
{
'mi_var1': 100,
'mi_var2': 'hola',
'mi_var3': None,
'mi_var4': 1,
'mi_var5': 'a1s2-d34g-g4as-da34',
'mi_var6': 'valor-123'
}
You can find the documentation here .
And to execute a code or a detarminated task every X time, you may want to read a little about the use of Rabbit and Celery with python or Django.