- April 14, 2010
- view function wrapper
- 0 (after 0 ratings)
This is an example how to create a wrapping function that can read all incoming arguments, do something with them and then call the original function. This pattern works well with generic views.
Note that wrapper function accepts arguments in both ways: as a list of unnamed arguments and as a list of keyword-value pairs.
A real-world example:
def published_object_list(request, *args, **kwargs): arg_names = object_list.func_code.co_varnames params = dict(zip(arg_names, args)) params.update(kwargs) params['queryset'] = params['queryset'].filter(is_published=True) if request.is_ajax(): params['template_name'] = "ajax/" + params['template_name'] return object_list(request, **params)
1 2 3 4 5 6 7 8 9
def wrapper_function(*args, **kwargs): arg_names = original_function.func_code.co_varnames params = dict(zip(arg_names, args)) params.update(kwargs) # now you have args and kwargs collected to the dictionary params # you can read and modify them here and then call the original function return original_function(**params)
More like this
- Other approach of making middleware (by decorators) by diverman 5 years, 4 months ago
- object-oriented generic views by carljm 7 years, 11 months ago
- Owner required decorator by polarbear 8 years ago
- PK->objects in view signature by AdamKG 8 years, 4 months ago
- Resolve URLs to view name and args/kwargs by fahhem 5 years, 8 months ago