Django <1.11
In addition to the other answers, this is a small example of custom widget code:
widgets.py :
from django.forms.widgets import Widget from django.template import loader from django.utils.safestring import mark_safe class MyWidget(Widget): template_name = 'myapp/my_widget.html' def get_context(self, name, value, attrs=None): return {'widget': { 'name': name, 'value': value, }} def render(self, name, value, attrs=None): context = self.get_context(name, value, attrs) template = loader.get_template(self.template_name).render(context) return mark_safe(template)
my_widget.html :
<textarea id="mywidget-{{ widget.name }}" name="{{ widget.name }}"> {% if widget.value %}{{ widget.value }}{% endif %}</textarea>
Django 1.11
Widgets are now displayed using the form visualization API .
Wtower Mar 02 '17 at 22:31 on 2017-03-02 22:31
source share