首先新建一个专门用于验证的app。命名为verification,并弄好配置。
先是验证用户名
在开始之前,先创建一个超级用户
在manage.py所在目录下,输入命令:
python manage.py createsuperuser
但是发现有报错,信息如下:
因为这里用的是createsuperuser 方法,,报错提示,一号位置的内容应该是type,而不是UserManager,查看代码发现
然后可以将self和UserManager位置对调一下,这样就可以成功创建超级用户了。
刷新可见用户已经创建
如果注册必须输入的是手机号而不是邮箱的话,可以修改重写的类
查看django自带的auth的models.py下,在用户类下有个
将他复制到自己的user下的models.py下,并修改
1.获取用户名
let $user_name = $('#user_name');
// 检验是否获取成功,可以用失去焦点事件
$user_name.blur();
function check_username(){
let sUsername = $user_name.val();
console.log(sUsername);
// 判断是否为空
if (sUsername == ''){
message.showError('用户名不可为空');
return
}
// 判断用户名是否满足要求
if (!(/^\w{5,20}$/).test(sUsername)){
message.showError('请输入5-20个字符的用户名');
return
}
// test()方法会返回一个字符串,并不是测试的意思,它会套上/和/之间的正则表达式
// 发送ajax请求,返回数据到后台
$ajax({
url: '/username/' + sUsername + '/', //拼接路由
type: 'GET', //请求格式
dataType: 'json', //响应格式
});
// ajax执行成功,要回调
// 可以通过.done回调,在执行成功之后会执行该函数
.done(function(res) {
// res为在views.py下,对应类函数返回的数据
//此处返回的是JsonResponse
//然后判断用户名是否已经被使用
if (res['data']['count']===1){
message.showError('您输入的用户名已经被使用');
} else {
message.showSucess('恭喜您,改手机号可以使用');
})
}
在验证app的urls.py下写:
# 首先用户名是正则来匹配的,通过路由来传递的
from django.urls import path, re_path
app_name = 'verify'
urlpatterns = [
path(r'image_code/<uuid:img_id>/', views.Image_code, name="image_code"),
# (?P<username>\w{5,20})即为re_path的用途
re_path(r'username/(?P<username>\w{5,20})/', views.CheckUserName.as_view(), name='c_username'),
# re_path用于匹配(?P<username>\w{5,20})
]
在views.py下:
from django.http import JsonResponse
from django.views import View
from users.models import Users
class CheckUsername(View):
"""
route: 传回来的路由是:username/(?P(\w{5,20})/
"""
def get(self,request, username):
"""
判断是否存在用户名,统计数量,如果已经存在,则数量变为1,
因为前面用户模型已经设置为Users,只需在前面导入
"""
count = Users.object.filter('username').count()
data = {
'count': count,
}
return JsonResponse({'data': data})
验证手机号的操作和验证用户名的操作一样。