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
- Generate and render HTML Table by LLyaudet 5 days, 11 hours ago
- My firs Snippets by GutemaG 1 week, 1 day ago
- FileField having auto upload_to path by junaidmgithub 1 month, 2 weeks ago
- LazyPrimaryKeyRelatedField by LLyaudet 1 month, 3 weeks ago
- CacheInDictManager by LLyaudet 1 month, 3 weeks ago
Comments
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 [email protected]
Thanks in advance by vamsi
#
Please login first before commenting.