Попробуйте следующее: http://cairosvg.org/
Сайт говорит:
CairoSVG написан на чистом питоне и только зависит от Pycairo. Известно, что он работает с Python 2.6 и 2.7.
blockquote>Обновление 25 ноября 2016 г. :
2.0.0 является новая основная версия, ее журнал изменений:
blockquote>
- Поддержка Drop Python 2
Посмотрите в этой недавней публикации Джейкоба Каплан-Мосса, одного из первых основателей Django: «Генерация динамических форм» . Он использует пример, чтобы показать вам процесс шаг за шагом. Отличное чтение.
Также есть статья Джеймса Беннета , выпускающего менеджера Django, от 2008 года.
В python вы можете создать экземпляр класса динамически. Knutin показывает хороший пример динамической настройки формы и добавления нескольких полей.
Вы также можете создать всю форму динамически, как показано в примере , приведенном Джеймсом Беннеттом :
def make_contact_form(user):
fields = { 'name': forms.CharField(max_length=50),
'email': forms.EmailField(),
'message': forms.CharField(widget=forms.Textarea) }
if not user.is_authenticated():
fields['captcha'] = CaptchaField()
return type('ContactForm', (forms.BaseForm,), { 'base_fields': fields })
Чтобы добавить, удалить и изменить поля в форме или ModelForm, просто переопределите __ init __ ()
следующим образом:
class MyForm(forms.Form):
def __init__(self, *args, **kwargs):
user = kwargs.pop('user')
other_stuff = kwargs.pop('stuff')
super(MyForm, self).__init__(*args, **kwargs)
self.fields['my_dynamic_field'] = forms.Field(...)
# Add fields based on user or other_stuff
И используйте его так: form = MyForm (user = user, stuff = stuff)