Accessing component inputs
When you call Component.render
or Component.render_to_response
, the inputs to these methods can be accessed from within the instance under self.input
.
This means that you can use self.input
inside:
get_context_data
get_template_name
get_template
on_render_before
on_render_after
self.input
is only defined during the execution of Component.render
, and raises a RuntimeError
when called outside of this context.
self.input
has the same fields as the input to Component.render
:
class TestComponent(Component):
def get_context_data(self, var1, var2, variable, another, **attrs):
assert self.input.args == (123, "str")
assert self.input.kwargs == {"variable": "test", "another": 1}
assert self.input.slots == {"my_slot": "MY_SLOT"}
assert isinstance(self.input.context, Context)
return {
"variable": variable,
}
rendered = TestComponent.render(
kwargs={"variable": "test", "another": 1},
args=(123, "str"),
slots={"my_slot": "MY_SLOT"},
)
NOTE: The slots in self.input.slots
are normalized to slot functions.