Search code examples
djangodjango-viewsdjango-templatesmiddleware

Django middleware doesn't working template


I implemented Django middleware for dynamic logo, site title, etc. It is working very slowly. example. When I updated my site title, it was not updated instantly. But when I server restarted It is working. this is my code


class AppBasicInfo():
    def __init__(self, get_response):
        self.site = SiteInfo.objects.first() if SiteInfo.objects.first() else "Not Implemented"
        self.get_response = get_response

    def __call__(self, request, *args, **kwargs):
        request.site = self.site
        response = self.get_response(request)
        return response

settings file

MIDDLEWARE = [
    'blog.middleware.AppBasicInfo',
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'debug_toolbar.middleware.DebugToolbarMiddleware',

    'blog.middleware.AppMenu',
    'blog.middleware.SocialIcon',
    'blog.middleware.DynamicYear',

]

and I call middleware variable as my template like {{request.site.site_title}}


Solution

  • __init__ is called only once, try moving

    self.site = SiteInfo.objects.first() if SiteInfo.objects.first() else "Not Implemented"
    

    to __call__