#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-адрес представления перенаправления).