Промежуточное программное обеспечение для ответа шаблона Django

#django #middleware

#django #промежуточное программное обеспечение

Вопрос:

Я пишу некоторое промежуточное программное обеспечение для своего приложения Django и застрял при попытке написать функцию process_template_response. Я знаком с шаблонами и рендерингом, но озадачен тем, как передать значения словаря шаблону на основе некоторых операторов if / else, которые я написал в функции process_request. Цель моего промежуточного программного обеспечения — выдавать перенаправления на основе статуса авторизации, и мне нужно передать сообщение «Не авторизован», когда кто-то запрашивает страницу, которую они не должны видеть.

Вот промежуточное программное обеспечение:

 import re

from django.conf import settings
from django.utils.deprecation import MiddlewareMixin
from django.http import HttpResponsePermanentRedirect

class CustomMiddleware(MiddlewareMixin):
    def __init__(self, get_response = None):
        self.get_response = get_response
        self.permittedPages = settings.PERMITTED_PAGES
        self.noLoginRequired = setting.NO_LOGIN_PAGES

    def process_request(self, request):
        request_path = request.path.lstrip('/')
        if request_path not in noLoginRequired  and request_path in permittedPages and request.user.is_authenticated == False:  HttpResponseRedirect(settings.LOGIN_URL)

        elif request_path not in permittedPages and request.user.is_authenticated: #if the page isn't accessible but the user is logged in
            not_found_message = 'This page isn't available, redirecting to the home page....'
            return HttpResponseRedirect('/home/'), not_found_message
        else: #if the page isn't accessible and the user isn't logged in
            return HttpResponseRedirect(settings.LOGIN_URL)

    def process_template_response(self, request):