根据Django模型直接生成表单

生成ORM模型(数据库)

注意:

  1. 确保数据库已经创建
  2. models文件所在模块添加到settings中的INSTALLED_APPS列表中
  1. 向模块下的models.py文件中添加内容
class User(models.Model):
    """
    创建数据库模型,该ORM模型会自动给添加id这个字段作为主键
    """
    # id = models.AutoField
    name = models.CharField("姓名", max_length=32, unique=True)
    age = models.PositiveIntegerField("年龄", default=22)
    sex = models.CharField("性别", max_length=1, choices={
        ("1", "男"),
        ("0", "女")
    }, default="1")
	password = models.CharField("密码", max_length=32)
    nickname = models.CharField("昵称", max_length=16)
    
    create_at = models.DateTimeField("创建时间", auto_now_add=True)
  1. 同步命令(将ORM模型同步到数据库,创建相应的表)
​python manage.py makemigrations
python manage.py migrate

在这里插入图片描述

向forms中添加表单类

关键字不能错,否则相应修改或功能无法实现

  1. 内部类必须是Meta,M大写
  2. fieldswidgets不能错
class UserForm(forms.ModelForm):
    """
    通过Django的数据库模型生成对应的表单
    内部类:Meta,指定一个 model=User,其中,User表示django的数据库模型
    """
    class Meta:
        model = models.User
        # 需要在表单中列出的字段
        fields = ['username', 'password', 'nickname']
        # attrs={"class": "text-error"}:给字段添加CSS的样式,标签类名
        widgets = {
            "password": forms.PasswordInput(attrs={
                "class": "text-error"
            })
        }
        label = {
            "username": "手机号码",
        }

        error_messages = {
            "username": {
                "required": "请输入手机号码...",
                "max_length": "最大长度不超过32位"
            }
        }

创建一个html文件

templates文件夹中创建一个test.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>使用Django 的ORM对象转换成表单</title>
</head>
<body>
	<form action="" method="post">
		{{ form.as_p }}
    	<input type="submit" value="表单提交">
	</form>
</body>
</html>

添加视图函数

  1. urls.py中添加路由
path('test/', view.model_to_form, name='model_to_form')
  1. views.py中添加model_to_form的视图函数
def model_to_form(request):
    """模型转换表单的试图"""
    form = UserForm()
    return render(request, "test.html", {
        "form": form
    })

验证结果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闲人编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值