Django 表单插件和库
Django 提供了一些表单相关的插件和库,以下是一些常用的:
- Django Crispy Forms:一个帮助你使用 Bootstrap 样式的表单插件,让你的表单看起来更美观、更专业。
使用方法:
安装:
pip install django-crispy-forms
settings.py 配置:
INSTALLED_APPS = [ # ... 'crispy_forms', ] CRISPY_TEMPLATE_PACK = 'bootstrap4'
在表单类中使用:
from django import forms from crispy_forms.helper import FormHelper from crispy_forms.layout import Submit class ContactForm(forms.Form): name = forms.CharField(label='Your name', max_length=100) message = forms.CharField(widget=forms.Textarea) def __init__(self, *args, **kwargs): super(ContactForm, self).__init__(*args, **kwargs) self.helper = FormHelper() self.helper.form_method = 'post' self.helper.add_input(Submit('submit', 'Submit'))
- Django Formtools:提供一些让表单开发更容易的工具,比如分步骤表单、表单向导等。
使用方法:
安装:
pip install django-formtools
在 urls.py 中使用:
from django.urls import path from formtools.wizard.views import SessionWizardView from .forms import ContactForm1, ContactForm2, ContactForm3 contact_forms = [ContactForm1, ContactForm2, ContactForm3] urlpatterns = [ path('contact/', SessionWizardView.as_view(contact_forms)), ]
- Django Bootstrap4:提供一些帮助使用 Bootstrap4 样式的工具和标签。
使用方法:
安装:
pip install django-bootstrap4
在 settings.py 中配置:
INSTALLED_APPS = [ # ... 'bootstrap4', ] # 如果需要使用原生的 Bootstrap 文件,可以配置为: BOOTSTRAP4 = { 'include_jquery': True, 'javascript_in_head': True, 'css_url': '/static/bootstrap/css/bootstrap.min.css', 'javascript_url': '/static/bootstrap/js/bootstrap.min.js', }
在表单类中使用:
from django import forms from bootstrap4.forms import BootstrapFormMixin class ContactForm(forms.Form, BootstrapFormMixin): name = forms.CharField(label='Your name', max_length=100) message = forms.CharField(widget=forms.Textarea)
在模板中使用:
{% extends 'base.html' %} {% load bootstrap4 %} {% block content %} <form method="post"> {% csrf_token %} {% bootstrap_form form %} {% buttons %} <button type="submit" class="btn btn-primary">Submit</button> {% endbuttons %} </form> {% endblock %}
以上是 Django 表单相关的一些插件和库,其中 Django Crispy Forms 和 Django Formtools 可以让表单的开发更简单快捷,Django Bootstrap4 可以让表单看起来更美观、更专业。
相关文章