Django的注册功能(五)

最简单的web开发在一定程度上,应该就是与数据库的各种交互。增删改查并将结果友好的展示到页面上。

打开register.html,可以看到<form method="POST">。也就是注册的内容会以表单的形式进行提交。forms.py文件进行表单的校验。用户名长度要大于5,用户名长度要小于20,用户名不能为空

1username = forms.CharField(label='用户名', max_length=20, min_length=5,
2                               error_messages={"min_length": "用户名长度要大于5", "max_length": "用户名长度要小于20",
3                                               "required": "用户名不能为空"}
4                               )

同理密码和再次输入密码也差不多

1password = forms.CharField(label='密码', max_length=20, min_length=6,
2                               error_messages={"min_length": "密码长度要大于6", "max_length": "密码长度要小于20",
3                                               "required": "密码不能为空"}
4                               )
5    password_repeat = forms.CharField(label='确认密码', max_length=20, min_length=6,
6                                      error_messages={"min_length": "密码长度要大于6", "max_length": "密码长度要小于20",
7                                                      "required": "密码不能为空"}
8                                      )

email由于数据库有限制了,所以这边就做个非空的校验好了

1email = forms.EmailField(required=True,
2                             error_messages={'required': "邮箱不能为空"})

我们需要验证第一次输入的密码和再次输入的密码是一致的,所以增加clean函数forms.py文件为:

 1import re
 2from django import forms
 3from .models import User
 4
 5
 6class RegisterForm(forms.Form):
 7    username = forms.CharField(label='用户名', max_length=20, min_length=5,
 8                               error_messages={"min_length": "用户名长度要大于5", "max_length": "用户名长度要小于20",
 9                                               "required": "用户名不能为空"}
10                               )
11    password = forms.CharField(label='密码', max_length=20, min_length=6,
12                               error_messages={"min_length": "密码长度要大于6", "max_length": "密码长度要小于20",
13                                               "required": "密码不能为空"}
14                               )
15    password_repeat = forms.CharField(label='确认密码', max_length=20, min_length=6,
16                                      error_messages={"min_length": "密码长度要大于6", "max_length": "密码长度要小于20",
17                                                      "required": "密码不能为空"}
18                                      )
19    email = forms.EmailField(required=True,
20                             error_messages={'required': "邮箱不能为空"})
21
22    def clean(self):
23        cleaned_data = super().clean()
24        passwd = cleaned_data.get('password')
25        passwd_repeat = cleaned_data.get('password_repeat')
26
27        if passwd != passwd_repeat:
28            raise forms.ValidationError("两次密码不一致")

下面是对post接口的代码编写

640?wx_fmt=png
注册页面

输入一些正确的注册参数后,点击注册,触发post接口,记得要在post函数的第一行打上断点:
640?wx_fmt=png
断点

这样就可以看到request拿到的东西了
640?wx_fmt=png
request的内容

很容易的可以看出,我们需要的东西都在 request.POST里面了
640?wx_fmt=png
request.POST

我们用类似字典取值的方式【 get】拿出我们需要的几个值
1use_key = ['username', "password", "password_repeat", "email"]
2dict_data = {}
3for i in use_key:
4    dict_data[i] = request.POST.get(i)

接下来实例化表单验证:form = RegisterForm(data=dict_data)form.is_valid()就可以进行验证了

640?wx_fmt=png
通过测试
640?wx_fmt=png
不通过测试1
640?wx_fmt=png
不通过测试2

可以看到如果输入符合要求的内容表单会自动校验并返回True。

1username = form.cleaned_data.get('username')
2password = form.cleaned_data.get('password')
3email = form.cleaned_data.get('email')
4user = User.objects.create(username=username, password=password, email=email)
5user.save()
6return render(request, 'login/index.html')

使用create插入数据,使用save把操作生效。打开数据库可以看到效果。在完成注册后会自动跳转到登录界面。

640?wx_fmt=png
数据库

这里面的调用关系请直接查阅源码:

PS:欢迎关注我的公众号~

640?wx_fmt=png
我的公众号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值