Login

Passing values to a method from a template

Author:
miracle2k
Posted:
March 16, 2008
Language:
Python
Version:
.96
Tags:
template templates method call arguments
Score:
0 (after 0 ratings)

A simple trick to let a function be called with exactly ONE argument from a Django template, by passing it via an attribute. Example:

class SearchResult(object):
    @template_callable
    def highlighted(self, field):
        return self._xappy_result.highlight(field)

result = SearchResult()
result.highlighted.title

{{ result.highlighted.title }}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
def template_callable(func):   
    class GetAttrCaller(object):
        def __init__(self, instance):
            self.instance = instance
        def __getattr__(self, name):
            return func(self.instance, name)
        # Would cause Django to think this is a method, even through templates
        #def __call__(self, *args, **kwargs):
        #    return func(self, *args, **kwargs)
    class TemplateCallableDescriptor(object):
        def __get__(self, instance, klass):
            return GetAttrCaller(instance)
    return TemplateCallableDescriptor()

More like this

  1. if tag with method call by dahool 6 years ago
  2. Functional Filters by waterson 7 years, 8 months ago
  3. FieldAccessForm (per-field user access for forms derived from models) by Killarny 6 years, 7 months ago
  4. Model Hooks by jakecr 5 years, 4 months ago
  5. Automatic Memoization Decorator by nikmolnar 2 years, 4 months ago

Comments

gvkreddyvamsi (on April 18, 2008):

HI,

Iam new to python and django.

Here i need to enable radio buttons on home screen depending on data stored in model database. How we can do this to get data in database and enabling radio buttons on same screen?

For example i have to choose role which is not filled already.

Plz help me.

my mail gvkreddy.reddy@gmail.com

Thanks in advance by vamsi

#

Please login first before commenting.