Django Form与modelForm

本文介绍了Django中的表单处理,包括基础Form类的常用方法、参数及自定义验证规则,强调了modelForm在与模型映射时的便利性,提供在视图中使用Form的实践建议,特别提到了在处理choice字段时的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注明

本笔记主要参考《Django应用开发实战》《Django企业开发实战》,这两本书前者详细,后者精炼。学习之后真的是感觉自己进步了很多。值得一读,如果你遇到了值得一读的书籍,欢迎推荐给我,大家共同进步。



前言

网页表单是web开发的一项基本功能,Django的表单可以由Form类实现,主要分为两种:django.forms.Form和django.forms.ModelForm。前者是一个基础的表单功能,后者是在前者的基础上结合所生成的。


初识表单

传统的表单都是在模板文件中用HTML编写的,在模板文件中通过HTML来编写是一种较为简单的实现方式,但是不利于日后的维护和更新。为了简化表单的实现过程和提高表单的灵活性,Django提供了完善的表单功能。

Forms介绍

在对应的app下创建form.py

from django import forms
from django.forms import widgets
class LoginForm(forms.Form):
username = forms.CharField(min_length=8,label="用户名",
        initial="张三",error_messages={
   "required": "不能为空",
            "invalid": "格式错误","min_length": "用户名最短8位"})
    pwd = forms.CharField(min_length=6,label="密码",widget=forms.widgets.PasswordInput(attrs={
   'class': 'c1'}, render_value=True)
        # 这个密码字段和其他字段不一样,默认在前端输入数据错误的时候,点击提交之后,默认是不保存的原来数据的,但是可以通过这个render_value=True让这个字段在前端保留用户输入的数据
    )
    gender = forms.ChoiceField(choices=((1, "男"), (2, "女"), (3, "保密")),label="性别",initial=3,
        widget=forms.widgets.RadioSelect())
    hobby = forms.ChoiceField(  # 注意,单选框用的是ChoiceField,并且里面的插件是Select,不然验证的时候会报错, Select a valid choice的错误。
        choices=((1, "篮球"), (2, "足球"), (3, "双色球"),),
        label="爱好",
        initial=3,
        widget=forms.widgets.Select()
    )
    hobby1 = forms.MultipleChoiceField(
        # 多选框的时候用MultipleChoiceField,并且里面的插件用的是SelectMultiple,不然验证的时候会报错。
        choices=((1, "篮球"), (2, "足球"), (3, "双色球"),),
        label="爱好1",
        initial=[1, 3],
        widget=forms.widgets.SelectMultiple()
    )
    keep = forms.ChoiceField(
        label="是否记住密码",
        initial="checked",
        widget=for
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值