Auth_middleware.<locals>.middleware() получил неожиданный аргумент ключевого слова 'user_id'

Я пытаюсь применить мое пользовательское промежуточное ПО auth в пути url, который имеет id .

Но получаю эту ошибку.

from .views import Profile

app_name = 'account'

from employer.middlewares.auth import auth_middleware

urlpatterns =[
    path('dashboard/pages-profile/<int:user_id>', auth_middleware(Profile.as_view()), name='profile'),
    ]

А мое промежуточное ПО auth следующее:

from django.http import HttpResponseRedirect

def auth_middleware(get_response):
    def middleware(request):
        return_url = request.META['PATH_INFO']
        if not request.session.get('user_id'):
            return HttpResponseRedirect(f'{reverse("account:login")}?return_url={return_url}')
        response = get_response(request)
        return response
    return middleware

Вам нужно подключить ваше пользовательское промежуточное ПО к цепочке промежуточного ПО, определенной в MIDDLEWARE в вашем settings.py. Указатель пути, куда вы сейчас просто помещаете его, ожидает функцию или представление на основе класса. Поэтому вы пытаетесь активировать свое промежуточное ПО, просто обернув представление в оператор пути, что неправильно. Смотрите также объяснения, когда вы ищете "custom middleware tutorial" в документации django.

Вернуться на верх