django-components/django_components/component.py
2019-11-24 11:09:14 +01:00

28 lines
840 B
Python

from django.forms.widgets import MediaDefiningClass
from django.template.loader import render_to_string
from six import with_metaclass
# Allow "component.AlreadyRegistered" instead of having to import these everywhere
from django_components.component_registry import AlreadyRegistered, ComponentRegistry, NotRegistered # NOQA
class Component(with_metaclass(MediaDefiningClass)):
def context(self):
return {}
def template(self, context):
return ""
def render_dependencies(self):
return self.media.render()
def render(self, *args, **kwargs):
context = self.context(*args, **kwargs)
return render_to_string(self.template(context), context)
class Media:
css = {}
js = []
# This variable represents the global component registry
registry = ComponentRegistry()