Login

Middleware to resolve current URL to module and view

Author:
kuchin
Posted:
July 20, 2010
Language:
Python
Version:
1.2
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. Template tag - list punctuation for a list of items by shapiromatron 2 months ago
  2. JSONRequestMiddleware adds a .json() method to your HttpRequests by cdcarter 2 months, 1 week ago
  3. Serializer factory with Django Rest Framework by julio 9 months, 1 week ago
  4. Image compression before saving the new model / work with JPG, PNG by Schleidens 9 months, 4 weeks ago
  5. Help text hyperlinks by sa2812 10 months, 3 weeks ago

Comments

Please login first before commenting.