from django.core.cache import cache
from django.conf import settings
from apps.core.models.url_style import UrlSettings


class SettingsMiddleware:

    def __init__(self, get_response):  # 必须添加的初始化方法
        self.get_response = get_response  # 保存 get_response

    def __call__(self, request):
        # 从缓存获取或设置完整配置
        request.url_style = cache.get_or_set(
            'url_style',
            UrlSettings.load(),  # 注意：这里传递的是函数引用，不是函数调用
            version=settings.SITE_CONFIG_CACHE_VERSION)
        # 调用后续中间件和视图
        return self.get_response(request)
