版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33867131/article/details/83346889
1、models.py文件:
from django.db import models
class User(models.Model):
username = models.CharField(max_length=100)
password = models.CharField(max_length=16)
telephone = models.CharField(max_length=11)
2、forms.py文件:
from django import forms # 注意是django下的forms
from one.models import User
class RegisterForm(forms.ModelForm):
pwd1 = forms.CharField(max_length=16, min_length=6)
pwd2 = forms.CharField(max_length=16, min_length=6)
# 如果要控制多个字段,就要重写clean()函数
def clean(self):
cleaned_data = super().clean()
pwd1 = cleaned_data.get('pwd1')
pwd2 = cleaned_data.get('pwd2')
if pwd1 != pwd2:
raise forms.ValidationError('两个密码不一致!')
class Meta:
model = User
exclude = ['password']
3、views.py文件:
from django.views.generic import View
from one.forms import RegisterForm
# 定义GET或者POST方法:根据是GET还是POST请求来做相应的操作
class IndexView(View):
# 如果是GET请求,那么返回一个空的表单
def get(self, request):
form = RegisterForm()
return render(request, 'one/index.html', {'form': form})
# 如果是POST请求,那么将提交上来的数据进行校验
def post(self, request):
form = RegisterForm(request.POST)
if form.is_valid():
# 在调用save方法的时候,如果传入一个commit=False,那么只会生成这个模型的对象,而不会把这个对象真正的插入到数据库中
user = form.save(commit=False)
# 通过clean()验证之后,再将创建的对象真正的插入数据库中
user.password = form.cleaned_data.get('pwd1')
user.save()
return HttpResponse("注册成功")
else:
return HttpResponse("注册失败")
4、路由
path('', IndexView.as_view())
5、index.html文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="" method="post">
<table>
{{ form.as_table }}
<tr>
<td></td>
<td><input type="submit" value="提交"></td>
</tr>
</table>
</form>
</body>
</html>