python - Django @login_exempt decorator with LoginRequiredMiddleware -


i want loginrequiredmiddleware, need @login_exempt decorator views.

i try write middleware:

exempt_urls = [re.compile(settings.login_url.lstrip('/'))] if hasattr(settings, 'login_exempt_urls'):     exempt_urls += [re.compile(expr) expr in settings.login_exempt_urls]   class loginrequiredmiddleware(object):     """     middleware requires user authenticated view page other     login_url. exemptions requirement can optionally specified     in settings via list of regular expressions in login_exempt_urls (which     can copy urls.py).      requires authentication middleware , template context processors     loaded. you'll error if aren't.     """ def process_request(self, request):     assert hasattr(request, 'user'), "the login required middleware\                                      requires authentication middleware installed. edit your\                                      middleware_classes setting insert\                                      'django.contrib.auth.middlware.authenticationmiddleware'. if doesn't\                                      work, ensure template_context_processors setting includes\                                      'django.core.context_processors.auth'."     if not request.user.is_authenticated():         path = request.path_info.lstrip('/')         if not any(m.match(path) m in exempt_urls):             return httpresponseredirect(settings.login_url)  def process_view(self, request, view_func, view_args, view_kwargs):     pass     # here can check view_kwargs.get('login_exempt') 

and write view decorator:

@login_exempt def my_view(request):     pass  def login_exempt(func):     @functools.wraps(func)     def wrapper(request, *args, **kwargs):         kwargs['login_exempt'] = true         return func(request, *args, **kwargs)     return wrapper 

but in case have:

my_view() got unexpected keyword argument 'login_exempt'

how solve problem correctly @ login_exempt , loginrequiredmiddleware? maybe went wrong way solving problem , there more correct solution?


Comments

Popular posts from this blog

commonjs - How to write a typescript definition file for a node module that exports a function? -

openid - Okta: Failed to get authorization code through API call -

thorough guide for profiling racket code -