我想我终于明白了。问题在于自定义登录中间件
过程视图功能。我应该导入“re”模块,然后改为执行此操作
from django.conf import settings
from django.shortcuts import redirect,render
from django.urls import reverse
import re
EXEMPT_URLS = [re.compile(url) for url in settings.LOGIN_EXEMPT_URLS]
class LoginRequired:
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,):
assert hasattr(request, 'user')
path = request.path_info.lstrip('/')
url_is_exempt = any(url.match(path) for url in EXEMPT_URLS)
if request.user.is_authenticated and url_is_exempt:
if path == reverse('accounts:homepage').lstrip('/'):
return None
return redirect(settings.LOGIN_REDIRECT_URL)
elif request.user.is_authenticated or url_is_exempt:
return None
else:
return redirect(settings.LOGIN_REDIRECT_URL).
主要方面是
EXEMPT_URLS = [re.compile(url) for url in settings.LOGIN_EXEMPT_URLS]
和
url_is_exempt = any(url.match(path) for url in EXEMPT_URLS)
有了这个我就可以匹配网址了