Upload
walter-angolar-da-silva
View
230
Download
0
Embed Size (px)
Citation preview
7/25/2019 Django Crispy Forms Pygrunn
1/70
django-crispy-forms
Miguel Araujo
@maraujop
http://github.com/maraujophttp://github.com/maraujop7/25/2019 Django Crispy Forms Pygrunn
2/70
Django forms
7/25/2019 Django Crispy Forms Pygrunn
3/70
Django forms
form.as_ul
form.as_p
form.as_table
7/25/2019 Django Crispy Forms Pygrunn
4/70
Django forms
class ExampleForm(forms.Form):
username = forms.CharField()
email = forms.CharField()
7/25/2019 Django Crispy Forms Pygrunn
5/70
Django forms
{{ example_form.as_ul }}
Username:
Email:
7/25/2019 Django Crispy Forms Pygrunn
6/70
How about divs?
7/25/2019 Django Crispy Forms Pygrunn
7/70
Reorder elds?
7/25/2019 Django Crispy Forms Pygrunn
8/70
Django forms
Moving chunks of code
class ExampleForm(forms.Form):email = forms.CharField()
username = forms.CharField()
7/25/2019 Django Crispy Forms Pygrunn
9/70
class ExampleForm(forms.Form):email = forms.CharField()
username = forms.CharField()
class ExampleForm(forms.Form):username = forms.CharField()
email = forms.CharField()
Django forms
Moving chunks of code
7/25/2019 Django Crispy Forms Pygrunn
10/70
Django forms
Make comment the rst eld?
class ExampleForm(forms.Form):email = forms.CharField()
username = forms.CharField()
class ExtraFieldForm(ExampleForm):comment = forms.CharField()
7/25/2019 Django Crispy Forms Pygrunn
11/70
Django forms
self.elds is a SortedDict
self.elds.keyOrder is a list ['username', 'email', 'comment']
class ExtraFieldForm(ExampleForm):comment = forms.CharField()
def__init__(self, *args, **kwargs):
super(ExtraFieldForm, self).__init__(*args, **kwargs)
self.elds.keyOrder = ['comment', 'email', 'username']
7/25/2019 Django Crispy Forms Pygrunn
12/70
Django forms
What if I have 100 elds?
class ExtraFieldForm(ExampleForm):
comment = forms.CharField()
def__init__(self, *args, **kwargs):super(ExtraFieldForm, self).__init__(*args, **kwargs)
self.elds.keyOrder.remove('comment')
self.elds.keyOrder.insert(0, 'comment')
7/25/2019 Django Crispy Forms Pygrunn
13/70
Django ModelForms
ModelForms are different, why?
class ExampleForm(forms.ModelForm):class Meta:
model = ExampleModel
elds = ('username', 'email')
7/25/2019 Django Crispy Forms Pygrunn
14/70
Customize outpu
7/25/2019 Django Crispy Forms Pygrunn
15/70
Asteriks for required elds
{% for eld in form %}{{ eld }} {% ifeld.eld.required %}(*){% endif%}
{% endfor %}
7/25/2019 Django Crispy Forms Pygrunn
16/70
Asteriks for required elds
{% for eld in form %}{{ eld }} {% ifeld.eld.required %}(*){% endif%}
{% endfor %}
What about eld.errors ?
What about form.non_eld_errors ?
etc.
7/25/2019 Django Crispy Forms Pygrunn
17/70
Something morecomplex?
7/25/2019 Django Crispy Forms Pygrunn
18/70
7/25/2019 Django Crispy Forms Pygrunn
19/70
django-crispy-forms
Formerly known as django-uni-form, created by Daniel Greenfeld
@pydanny in 2008
I joined the project in the middle of 2010 and became lead developer
38 contributors
Tested and thoroughly used
Two template packs: bootstrap & uni_form CRISPY_TEMPLATE_PACK
http://github.com/pydannyhttp://github.com/pydanny7/25/2019 Django Crispy Forms Pygrunn
20/70
django-crispy-forms
A lter |crispy
A tag {% crispy %}
They work on forms, modelforms and formsets
7/25/2019 Django Crispy Forms Pygrunn
21/70
|crispy lter
Easy div format
No need to change form code at all
{% load crispy_forms_tags %}
{{ example_form|crispy }}
7/25/2019 Django Crispy Forms Pygrunn
22/70
Django forms
{{ example_form|crispy }}
Username*
7/25/2019 Django Crispy Forms Pygrunn
23/70
7/25/2019 Django Crispy Forms Pygrunn
24/70
{% crispy %} tag
I don't like writing HTML for forms
I need customization power
They need to be as DRY as possible
7/25/2019 Django Crispy Forms Pygrunn
25/70
{% crispy %} tag
{% crispy form [helper] %}
{% crispy example_form %}
Username*