我们的用户验证模型里面有 手机号、 邮箱、 姓名、性别、 出生日期 , 还有一个验证码需要提供
可以设置 model 如下 :
from datetime import datetime
from django.db import models
from django.contrib.auth.models import AbstractUser
class UserProfile(AbstractUser):
"""
用户
"""
name = models.CharField(max_length=30, null=True, blank=True, verbose_name="姓名")
birthday = models.DateField(null=True, blank=True, verbose_name="出生年月")
gender = models.CharField(max_length=6, choices=(("male", u"男"), ("female", "女")), default="female", verbose_name="性别")
mobile = models.CharField(null=True, blank=True, max_length=11, verbose_name="电话")
email = models.EmailField(max_length=100, null=True, blank=True, verbose_name="邮箱")
class Meta:
verbose_name = "用户"
verbose_name_plural = verbose_name
def __unicode__(self):
return self.name
class VerifyCode(models.Model):
"""
短信验证码
"""
code = models.CharField(max_length=10, verbose_name="验证码")
mobile = models.CharField(max_length=11, verbose_name="电话")
add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")
class Meta:
verbose_name = "短信验证码"
verbose_name_plural = verbose_name
def __unicode__(self):
return self.code
我们的用户 model 还是【继承自 AbstractUser 】,并且按实际需求在上面做一些字段的扩展。
我们需要替换系统用户还需要在 django 的 settings.py 当中来设置(加入下面这行代码)。
AUTH_USER_MODEL = 'users.UserProfile' #重载settings的方法
我们的验证码可以也可以保存在 redis 里面, 但是 放到数据库比较直观。