import re from django import forms class LinkFieldWidget(Widget): ''' A TextField widget with previewing link, generated from field's value with special url mask ''' def __init__(self, text, url='%s', *args, **kwargs): self.url = url self.text = text if not re.search('%', self.url): raise forms.ValidationError, u'Invalid URL mask' super(LinkFieldWidget, self).__init__(*args, **kwargs) def render(self, name, value, attrs=None): output = [] output.append('''''' % (name, value or '', name, self.url, '%s')) if self.url and self.text: output.append('%s' % (value and self.url % value or '#', name, value and 'inline' or 'none', self.text)) return mark_safe(u' '.join(output))