新建users App
python manage.py startapp users
将users加入到settings.py中,并添加
AUTH_USER_MODEL='users.UserProfile'
新建users的model
修改models.py,新增用户UserProfile,继承自AbstractUser,
from django.contrib.auth.models import AbstractUser
class UserProfile(AbstractUser):
birday=models.DateTimeField(verbose_name='生日',null=True,blank=True)
gender=models.CharField(max_length=6, choices=(('male','男'),('female','女')),default='female',verbose_name='性别')
address=models.CharField(max_length=100,default='', verbose_name='地址')
mobile=models.CharField(max_length=11,null=True,blank=True, verbose_name='手机号')
image=models.ImageField(upload_to='image/%Y/%m',default='image/default.png',max_length=100,verbose_name='图片')
class Meta:
verbose_name= '用户信息'
verbose_name_plural=verbose_name
def __str__(self):
return self.username
删除数据库除了auth_user外的所有表。然后重新migrate,生成新的数据表。
如果此前已经创建过管理员,需要为userprofile重新设置
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
配置静态文件夹
修改settings.py文件,设定静态文件夹
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, "static"),]
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
修改urls.py文件,使图片文件能访问和显示。
from django.urls import path, include, re_path
from django.views.static import serve
import xadmin
from mycrm.settings import MEDIA_ROOT
urlpatterns = [
path('xadmin/',xadmin.site.urls ),
re_path('media/(?P<path>.*)', serve, {"document_root": MEDIA_ROOT}),
]
新增邮箱验证码的设计
修改models.py,
class EmailVerifyRecord(models.Model):
code = models.CharField(max_length=20, verbose_name="验证码")
email = models.EmailField(max_length=50, verbose_name="邮箱")
send_type = models.CharField(verbose_name="验证码类型", choices=(('register', '注册'), ('forget', '找回密码'), ('update_email', '修改邮箱')), max_length=30)
send_time = models.DateTimeField(verbose_name="发送时间", default=datetime.now)
class Meta:
verbose_name = "邮箱验证码"
verbose_name_plural = verbose_name
def __str__(self):
return self.email
在user中新建一个名为adminx.py的文件,将EmailVerifyRecord注册进我们的admin中,并为它选择管理器EmailVerifyRecordAdmin
import xadmin
from users.models import EmailVerifyRecord
class EmailVerifyRecordAdmin(object):
list_display = ['code', 'email', 'send_type', 'send_time'] # 一次显示你想出现的多行数据
search_fields = ['code', 'email', 'send_type'] # 查询你想要的数据
list_filter = ['code', 'email', 'send_type', 'send_time'] # 过滤器
model_icon = 'fa fa-user'
xadmin.site.register(EmailVerifyRecord, EmailVerifyRecordAdmin)
注销后,重新登录,邮箱注册码注册成功。