Промежуточное программное обеспечение Django зацикливается при использовании process_view

#python #python-3.x #django #django-views #django-templates

Вопрос:

Промежуточное программное обеспечение Django зацикливается при использовании process_view

Я пытаюсь использовать этот метод для перенаправления процесса во время промежуточного программного обеспечения.

Промежуточный слой

 from django.urls        import reverse
from django.shortcuts   import redirect, render

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

    def __call__(self, request):
        response = self.get_response(request)
        return response
    
    def process_view(self, request, view_func, view_args, view_kwargs):
       
        return redirect(reverse('check_license'))
 

Url-адреса

 path('check-license', views.check_license, name='check_license')
 

Вид

 def check_license():
    return render(request, 'check_license.html')
 

Комментарии:

1. Что именно вы хотите сделать, чтобы вы поместили только перенаправление в промежуточное программное обеспечение? И вы также не учитываете, для какого представления вы перенаправляете, конечно, это переходит в бесконечную рекурсию (своего рода — фактически бесконечный цикл перенаправления).

2. Вы должны обработать его только один раз. Поскольку process_view вызывается перед представлением

3. Я ищу перенаправление на эту страницу, если лицензия недействительна. Например.

4. вам нужно ввести какое-то условие if-else, чтобы прервать рекурсию, т. Е. Перенаправить на это представление только в том случае, если выполнено какое-то условие и представление не является check_license.

5. Что-то вроде: if not license_valid() and request.path_info != "/check-license": (Предполагая /check-license , что это URL-адрес представления перенаправления).