The default-values can not change at the runtime. I think it would be more efficient to load all at once and not each be its own.

Something like:
```python
try:
    return self._config_variables[key]
except AttributeError:
    self._config_variables = {}
    for receiver, config_page in config_signal.send(sender=self):
        for config_object in config_page.variables:
            if config_object.name in self._config_variables:
                raise ConfigError('only one key is allowed...')
            self._config_variables[config_object.name] = config_object.value
except KeyError:
    raise ConfigError('No Value found for %s' % key)
```