Установка промежуточного программного обеспечения - PullRequest
1 голос
/ 01 мая 2020

Я пытаюсь настроить промежуточное ПО сообщений для моего маркетингового приложения, но метод process_request ничего не возвращает. он работает без ошибок, но не возвращает запросы сообщений.

my middleware.py ---

from .models import MarketingMessage

class DisplayMarketing():
    def __init__(self, get_response):
        self.get_response = get_response
    def __call__(self, request):
        def process_request(request):
            print("something")
            try:
                request.session['marketing_message'] = MarketingMessage.objects.all()[0].message
            except:
                request.session['marketing_message']  = False
        response = self.get_response(request)
        return response

my settings.py

MIDDLEWARE = [
    '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',
    'marketing.middleware.DisplayMarketing',
]

1 Ответ

1 голос
/ 01 мая 2020

если вы используете middleware mixin process_request будет автоматически вызываться.

try

from django.utils.deprecation import MiddlewareMixin

class DisplayMarketing(MiddlewareMixin):

    def __init__(self, get_response):
        self.get_response = get_response

    def process_request(self, request):
            print("something")
            try:
                request.session['marketing_message'] = "bossk"
            except:
                request.session['marketing_message']  = False

или, в противном случае, вы вызываете process_request вручную

from .models import MarketingMessage

class DisplayMarketing():
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        def process_request(request):
            print("something")
            try:
                request.session['marketing_message'] ="bossk"
            except:
                request.session['marketing_message']  = False
        response = self.get_response(process_request(request))
        return response
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...