前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django的注册功能(五)

Django的注册功能(五)

作者头像
zx钟
修改2019-07-19 16:36:05
6780
修改2019-07-19 16:36:05
举报
文章被收录于专栏:测试游记

最简单的web开发在一定程度上,应该就是与数据库的各种交互。增删改查并将结果友好的展示到页面上。 在完成了用户表的设计之后,今天就需要完成数据的插入工作了。

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

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

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

代码语言:javascript
复制
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由于数据库有限制了,所以这边就做个非空的校验好了

代码语言:javascript
复制
1email = forms.EmailField(required=True,
2                             error_messages={'required': "邮箱不能为空"})

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

代码语言:javascript
复制
 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接口的代码编写

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

断点 这样就可以看到request拿到的东西了

request的内容 很容易的可以看出,我们需要的东西都在request.POST里面了

request.POST 我们用类似字典取值的方式【get】拿出我们需要的几个值

代码语言:javascript
复制
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()就可以进行验证了 以下是几个测试的结果:

通过测试

不通过测试1

不通过测试2

可以看到如果输入符合要求的内容表单会自动校验并返回True。 真是省心省力的一个东西。 接下来就是把东西插入数据库了

代码语言:javascript
复制
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把操作生效。打开数据库可以看到效果。在完成注册后会自动跳转到登录界面。

数据库

这里面的调用关系请直接查阅源码: https://github.com/zx490336534/Zxapitest

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试游记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档