Я работаю над Middleware
в версии 2.1 для Django.Это LoginMiddleWare
, где мне нужно исключить некоторые URL, если requested url exits
возвращает None
ниже - это часть кода промежуточного программного обеспечения: middleware.py
def process_view(self, request, view_func, view_args, view_kwargs):
exclude_urls = [r'[admin]', r'[login]', r'[register]', r'[demo]']
if(request.path_info in exclude_urls):
print('BELOW IS EXCLUDED URL')
print(request.path_info)
return None
else:
print('BELOW IS NOT EXCLUDED URL')
print(request.path_info)
Вышекод должен идентифицировать URL, запрошенный пользователем request.path_info
, и должен проверять выходы в exclude_urls
ПРИМЕР: если запрошенный URL равен https://www.example.com/login?query=1
, это должно идентифицировать login
в этом конкретном URL и должно возвращать None
РЕДАКТИРОВАТЬ 1
После просмотра моего кода здесь появилось решение
url_list = [
'admin/login',
'/demo/login'
]
requested_path = request.path_info
print('requested path :'+requested_path)
for i in url_list:
r1 = re.findall(r'^'+requested_path, i)
print(len(r1))
if len(r1) > 0:
return None
else:
if not request.session.get('user_logged', None):
print("Session Empty")
return redirect('login') //HERE USER IS GOING INTO CONTINUOUS REDIRECT LOOP HOW CAN I STOP INFINITE REDIRECTS
else:
print("Session Exits")
ВЫШЕ ИЗМЕНЕНИЯ В КОДЕ РАБОТАЕТ НА НЕКОТОРОМ РАСШИРЕНИИ NOW THE ISSUE IS IT REDIRECTING TO https://www.example.com/demo/login
страница снова и снова какМогу ли я остановить это.
РЕДАКТИРОВАТЬ 2
Чего я хочу достичь
admin/login and demo/login
В настоящее время я хочу исключить два URL-адреса при проверке, если session exits in middleware.py
Случай 1: если URL существует в списке, а сессия пуста, и пользователь имеет REQUESTED demo/login
URL, который мне нужен, чтобы он перенаправил на свой URL demo/login
url
Случай 2: если запрашиваемый пользователем URL является другим, чем URLНАМЕРЕНО В list url_list
.В противном случае я проверяю, пуста ли сессия, затем я переадресовываю пользователя на страницу demo/login
[## НО ПОЛЬЗОВАТЕЛЬ ВХОДИТ В НЕПРЕРЫВНУЮ ПЕРЕНОСНУЮ ПЕРСПЕКТИВУ, КАК МОЖНО ОСТАНОВИТЬ БЕСКОНЕЧНЫЕ ПЕРЕНОСЫ ##]
СПАСИБОADVANCE