Django3.0应用02:用户UserProfile设置

新建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)
注销后,重新登录,邮箱注册码注册成功。
添加新评论