首先新建一个专门用于验证的app。命名为verification,并弄好配置。

先是验证用户名

在开始之前,先创建一个超级用户

在manage.py所在目录下,输入命令:

python manage.py createsuperuser

但是发现有报错,信息如下:

python 注册苹果ID python手机注册账号_用户名


因为这里用的是createsuperuser 方法,,报错提示,一号位置的内容应该是type,而不是UserManager,查看代码发现

python 注册苹果ID python手机注册账号_python 注册苹果ID_02


然后可以将self和UserManager位置对调一下,这样就可以成功创建超级用户了。

python 注册苹果ID python手机注册账号_django_03


刷新可见用户已经创建

python 注册苹果ID python手机注册账号_python 注册苹果ID_04


如果注册必须输入的是手机号而不是邮箱的话,可以修改重写的类

查看django自带的auth的models.py下,在用户类下有个

python 注册苹果ID python手机注册账号_django_05


将他复制到自己的user下的models.py下,并修改

python 注册苹果ID python手机注册账号_ajax_06

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})

验证手机号的操作和验证用户名的操作一样。