here's my crutch (just for the idea illustrating): pre-pre-pre-alpha :) settins.py MIDDLEWARE_CLASSES = ( 'middleware.handlers.Handler', # only first. it's posthandler processor builder 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'middleware.handlers.HandlerProcessor', # posthandlers processor )
middleware.handlers: class HandlerProcessor(object): def process_request(self, request, *args, **kwargs): pass def process_view(self, request, view_func, view_args, view_kwargs): # pops handlers list while len(Handler.handlers) > 0: name = Handler.handlers.pop() if name in dir(Handler) and callable(getattr(Handler, name)): call = 'Handler.'+name+'(request)' try: result = eval(call) if not result == None: return result except Exception, ex: return HttpResponseRedirect('/500.html') else: return HttpResponseRedirect('/500.html') class Handler(object): def process_request(self, request, *args, **kwargs): self.__class__.handlers = [] def add_handler(self, handler): self.__class__.handlers.append(handler) def process_view(self, request, view_func, view_args, view_kwargs): # this method check ch = re.compile(r'^hnd_(.*)$') for hname in view_kwargs: hl = ch.findall(hname) if len(hl) > 0: # if you need, save view_kwargs[hname] values (it's params for this handler) self.add_handler(hl[0]) # dont forget del view_kwargs[hname] ''' add your handlers here: def myHandler(self, request, *args, **kwargs): if smth_wrong(): return HttpResponseRedirect('/a_bad_result_page.html') # for example ''' def LoginRequired(self, request, *args, **kwargs): if user is not logged in: return HttpResponseRedirect('/login.html') def PermissionRequired(self, request, *args, **kwargs): # check permissions for access to '^members/account/' area pass in urls.py (r'^members/', include('members.urls'), {'hnd_LoginRequired':{}}), in members/urls.py (r'^account/', include('members.account.urls'), { 'hnd_PermissionRequired':{ 'handler_arg_name1':'handler_value1', 'handler_arg_name2':'handler_value2', }, 'view_arg_name1':'view_value1', 'view_arg_name2':'view_value2', } ), something like this.. :) -- You received this message because you are subscribed to the Google Groups "Django developers" group. To post to this group, send email to django-develop...@googlegroups.com. To unsubscribe from this group, send email to django-developers+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-developers?hl=en.