from django_components import Component, register, types
@register("greeting")
class Greeting(Component):
template: types.django_html = """
Hello, {{ name }}!
{% 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", ""),
},
)