Próbuję użyć parametru simple_tag i ustawić zmienną kontekstową. Używam wersji bagażniku DjangoDjango simple_tag i ustawianie zmiennych kontekstowych
from django import template
@register.simple_tag(takes_context=True)
def somefunction(context, obj):
return set_context_vars(obj)
class set_context_vars(template.Node):
def __init__(self, obj):
self.object = obj
def render(self, context):
context['var'] = 'somevar'
return ''
to robi ustawić zmienną, ale jeśli robię coś bardzo podobnego z @register.tag
to działa, ale parametr obiekt nie przechodzi przez ...
Dzięki!
dzięki, że jesteś odpowiedź była doskonała i bardzo doceniane – neolaser
Należy zauważyć, że wersja rozwojowa Django zawiera 'assignment_tag' która jest podobna do' simple_tag' ale z zaimplementowanym 'as variablename': https://docs.djangoproject.com/en/dev/howto/custom-template-tags/#assignment-tags –
Huh, nigdy wcześniej nie natknąłem się na' assignment_tag'. Sprytny. Aktualizacja dla przyszłych czytelników: 'assignment_tag' jest dostępny do użytku w wersjach Django> = 1.4 (który, jak zakładam, był w dev, kiedy został zrobiony komentarz powyżej). – chucksmash