Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
“Forms are static” – “No, they aren't”
Search
Markus H
June 02, 2015
Technology
10k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
“Forms are static” – “No, they aren't”
My talk from DjangoCon Europe 2015 in Cardiff, Wales
Markus H
June 02, 2015
More Decks by Markus H
See All by Markus H
Oh, I Found a Security Issue (reloaded 2026)
markush
0
51
🐍 ❤️ 🦀 — Python loves Rust
markush
0
300
Knock! Knock! Who's There?
markush
0
110
An Introduction To Kubernetes ☸
markush
0
160
Writing Safe Database Migrations (DjangoCon Europe 2021)
markush
0
14k
A Pony On The Move: How Migrations Work In Django 🐎
markush
0
13k
All Hands on Deck — Handling Security Issues
markush
0
14k
Logging Rethought 2: The Actions of Frank Taylor Jr. (PyCon UK 2019)
markush
0
91
Logging Rethought 2: The Actions of Frank Taylor Jr. (PyCon Australia 2019)
markush
1
250
Other Decks in Technology
See All in Technology
Jetson Orin Nanoとk3sとローカルLLMで音声文字起こしシステム作ってみた
y_sera15
0
120
無理せず続ける、子育てエンジニアの学び
codmoninc
PRO
0
670
Claude Code本は、どのように執筆チームで書かれたか
oikon48
1
360
hackers_champloo_2026_tidb
makocchi
0
110
実践! SRE × AI - ABEMA における AIOps -
tetsuya28
7
2.8k
OpenSharing について熱く語る〜AI アセットの共有について〜
kameitomohiro
0
250
IoTデバイスを繋げるプロトコルMatterをAndroidで使用する方法
harutiro
0
140
1万名の社員が使う認証基盤で どう信頼性を担保するか?
kairim0
0
230
AI時代のAPI開発を加速する品質ガードレール / API Quality Guardrails in the AI Era
yokawasa
0
180
"優秀な誰か"の下位互換にならないために
yut0naga1_fa
1
1.7k
Snapshot Testing in Practice: Predictable and Reliable SwiftUI Views
fespinoza
0
180
Cognition AI Japan - ウェビナー2_テストQA_運用監視
cogakira
0
130
Featured
See All Featured
How to build a perfect <img>
jonoalderson
1
6.1k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
450
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
450
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
260
SEO for Brand Visibility & Recognition
aleyda
0
4.8k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
560
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
sira's awesome portfolio website redesign presentation
elsirapls
0
450
The Invisible Side of Design
smashingmag
301
52k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
430
Transcript
“Forms are static” – “No, they aren't”
Hi, I’m Markus Holtermann • Django Core Developer • CS
MSc Student @m_holtermann • github.com/MarkusH • markusholtermann.eu
Forms are static
What does “static” even mean?
What about request dependent forms?
They are static too!
What are non-static forms then?
Why do you need them?
How does that work?
def modelform_factory(model, …): attrs = { ‘fields’: fields_for_model(model), ‘model’: model,
} Meta = type(str('Meta'), (object,), attrs) class_attrs = {‘Meta’: Meta} class_name = model.__name__ + str('Form') return type( class_name, ModelForm, class_attrs )
Wait! Aren’t they still static?
type(name, bases, attrs) rocks!
django-dynamic-forms http://django-dynamic-forms.rtfd.org
Actions FormModel Name URLs Name FormFieldModel Options Label … …
belongs to
@formmodel_action('Send to admins') def send_admins(form_model, form, request): # label →
value mapped_data = form.get_mapped_data() # construct message message = render_to_string( 'dynamic_forms/email.txt', { 'form': form_model, 'data': mapped_data}) # send data via mail mail_admins( “New form submission”, message )
@dynamic_form_field class IntegerField(BaseDynamicFormField): cls = 'django.forms.EmailField' display_label = 'Email' class
Meta: # attribute = [type, default, class] max_value = [int, None, forms.IntegerField] min_value = [int, None, forms.IntegerField]
None
None
None
django-dynamic-forms http://django-dynamic-forms.rtfd.org
Thank You! @m_holtermann • github.com/MarkusH • markusholtermann.eu