生成ORM模型(数据库)
注意:
- 确保数据库已经创建
- models文件所在模块添加到settings中的INSTALLED_APPS列表中
- 向模块下的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)
- 同步命令(将ORM模型同步到数据库,创建相应的表)
python manage.py makemigrations
python manage.py migrate
向forms中添加表单类
关键字不能错,否则相应修改或功能无法实现
- 内部类必须是Meta,M大写
- fields和widgets不能错
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>
添加视图函数
- 向urls.py中添加路由
path('test/', view.model_to_form, name='model_to_form')
- 向views.py中添加model_to_form的视图函数
def model_to_form(request):
"""模型转换表单的试图"""
form = UserForm()
return render(request, "test.html", {
"form": form
})