You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Refactoring a field into a property can lead to surprising results when rendering
class C(TemplateRenderer):
x = 2
class D(TemplateRenderer):
@property
def x(self):
return 2
c = C()
d = D()
c.render_template("{{x}}") # "2"
d.render_template("{[x}}") # "<property ob... 0x101300e68>"
Cause: @propertys show up in the class dict as a property object, but not in the instance dict, and TemplateRenderer uses these dicts when rendering. So the computed property value isn't visible to the render method.
The text was updated successfully, but these errors were encountered:
There's probably a good solution to this somewhere in Jinja itself -- I'd dig around in their code (or example code) to see if there's a better approach for passing a full object as the context but also providing overrides/extensions via extra parameters to the render method.
Refactoring a field into a property can lead to surprising results when rendering
Cause:
@property
s show up in the class dict as a property object, but not in the instance dict, and TemplateRenderer uses these dicts when rendering. So the computed property value isn't visible to the render method.The text was updated successfully, but these errors were encountered: