django-components/sampleproject/components/greeting.py
Juro Oravec 28b61c1609
refactor: Update docs and tests to use get_template_data() (#1161)
* refactor: update docs and tests to use get_template_data()

* refactor: fix linting

* docs: add note about difference between the two methods
2025-05-03 12:04:10 +02:00

37 lines
1,000 B
Python

from django_components import Component, register, types
@register("greeting")
class Greeting(Component):
template: types.django_html = """
<div id="greeting">Hello, {{ name }}!</div>
{% slot "message" %}{% endslot %}
"""
css: types.css = """
#greeting {
display: inline-block;
color: blue;
font-size: 2em;
}
"""
js: types.js = """
document.getElementById("greeting").addEventListener("click", (event) => {
alert("Hello!");
});
"""
def get_template_data(self, args, kwargs, slots, context):
return {"name": kwargs["name"]}
class View:
def get(self, request, *args, **kwargs):
slots = {"message": "Hello, world!"}
return Greeting.render_to_response(
request=request,
slots=slots,
kwargs={
"name": request.GET.get("name", ""),
},
)