Saturday, December 28, 2013

Re: Accessing attributes of the current view in Django middleware?

Hey,

Try along these lines:

    def process_view(self, request, view_func, view_args, view_kwargs):
        view = get_class(view_func.__module__, view_func.__name__)
        view.my_attribute

While `get_class()`:

from django.utils import importlib


def get_class(module_name, cls_name):
    try:
        module = importlib.import_module(module_name)
    except ImportError:
        raise ImportError('Invalid class path: {}'.format(module_name))
    try:
        cls = getattr(module, cls_name)
    except AttributeError:
        raise ImportError('Invalid class name: {}'.format(cls_name))
    else:
        return cls

Robert


On Friday, December 27, 2013 8:39:49 PM UTC, alk wrote:

I'm trying to access an attribute of the current view instance in the middleware layer.

For example, given a class-based view like this:

# views.py  class MyView(View):      my_attribute = 'something'

I'd love to be able to get a handle on my_attribute in the middleware by doing something like this:

# middleware.py  def process_view(self, request, view_func, view_args, view_kwargs):      my_attribute = request.view.my_attribute

Of course, this does not work because Django doesn't expose the view instance through the request object.

Is there any way to get this accomplished?

Many thanks!

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/0238bf6b-5c16-4eeb-9122-cb068accb913%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

No comments:

Post a Comment