Login

Middleware to resolve current URL to module and view

Author:
kuchin
Posted:
July 20, 2010
Language:
Python
Version:
1.2
Tags:
middleware view url resolve
Score:
0 (after 0 ratings)

Add it to MIDDLEWARE_CLASSES and you will get request.current_view getting values like "connection.views.index" or "django.views.static.serve" - one example usage is to show different help text based on current view name.

EDIT: actually, you can use process_view middleware function where you automatically get current_view as first parameter.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
from django.core.urlresolvers import resolve


class GetCurrentViewMiddleware(object):

    def process_request(self, request):
        try:
            current_view = resolve(request.path)[0]
            # Handle wrappers
            if hasattr(current_view, 'view_func'):
                current_view = current_view.view_func
            # Saving back to request
            setattr(request, 'current_view', '%s.%s' % (current_view.__module__,
                                                        current_view.__name__))
        except:
            pass

More like this

  1. A GET string modifier templatetag by cogat 6 years, 5 months ago
  2. SSL Middleware by sjzabel 8 years, 2 months ago
  3. Middleware that fixes URLs generation for admin and {% url %} for SCGI and WSGI by dottedmag 7 years, 10 months ago
  4. Variable resolving URL template tag by UloPe 6 years, 2 months ago
  5. Ensure submitted slugs do not conflict with existing resolvable URLs by ElfSternberg 5 years, 11 months ago

Comments

Please login first before commenting.