GoodForms — rails-like renderer for your form fields. Provide fully control of filed styles and attributes. It's not replacement for django.forms
.
Run pip install django-goodforms
and add goodforms
to INSTALLED_APPS
. That's all.
The view:
from django.shortcuts import render
from django import forms
class LoginForm(forms.Form):
username = forms.CharField()
password = forms.PasswordField()
def sign_up(request):
from = MyForm(initial={'username': 'johnsmith'})
return render(request, 'index.html', {'form': form})
The template:
{% load form_fields %}
{% form name="login" class="login-form" %}
{% textfield form.username class="login-form_input" %}
{% textfield form.password class="login-form_input" %}
{% submit_button "Login" %}
{% endform %}
- Form tag automatically inject csrf-token.
- Fields use
name
attribute as prefix forid
andfor
in labels.
{% form name="myform" action="url_or_route_name" multipart=True %}
<!-- Form content -->
{% endform %}
{% textfield form.title **kwargs %}
{% textarea form.description **kwargs %}
{% select form.country values="ru:Russia,de:Germany" %}
You can use any dict, iterable collection or queryset as values list:
{% select form.county values=any_iterable_object value_key="code" label_key="title" %}
{% radio form.gender value="female" %}
{% radio form.gender value="male" %}
The label
attribute wraps checkbox to <label>
tag. All attributes provite to it:
{% checkbox form.agree label="I agree" style="font-weight: bold;" %}
<label style="font-weight: bold;">
<input type="checkbox" name="agree" value="1"> <span>I agree</span>
</label>
{% submit_button "Send message" %}
{% submit_button "Save as draft" name="is_draft" value=True %}
You can use any of field without a form class:
{% input "username" required=True %}
{% select "city" values="1:New York, 2:London" %}
GOODFORMS_XHTML
— Enable or disable XHTML syntax (default: False
)
GOODFORMS_AUTO_ID
— Automatically generate id
and for
attributes for fields and labels (default: True
)
GOODFORMS_ID_PREFIX
— Prefix for auto-generated id
and for
attributes. For forms without name
attribute (default: field
)
Licensed under the MIT license.