Django自定义用户注册

Django自定义用户注册

最近在使用Django框架搭建一个旅游网站,但是之前没有写过Django相关项目.
选择Django也是因为有点Python基础.所以在网上找资料学习,现学现用.

由于搭建的旅游网站需要用户注册登录,但是Django自带的user模型只有用户名,密码,邮箱.
而我需要的是用户名,密码,邮箱,联系方式,住址等信息.所以需要自定义user模型.这里记录一下方法

1.自定义user模型

修改app目录下的models.py文件

from django.contrib.auth.models import BaseUserManager,AbstractUser
from django.db import models

 #自定义myUser类
class myUser(BaseUserManager):     #继承BaseUserManage
    def _create_user(self,username,password,email,**kwargs):   # **kwargs不定长参数,传入联系方式,住址等信息
        if not username:
            raise ValueError("用户名不能为空!")
        if not password:
            raise ValueError("密码不能为空!!")
        if not email:
            raise ValueError("邮箱地址不能为空!!")
        user = self.model(username=username,email=email,**kwargs)
        user.set_password(password)                     #密码加密
        user.save()                 		            #保存用户信息
        return user       

    def create_user(self,username,password,email,**kwargs): # 创建普通用户
        kwargs['is_superuser'] = False
        return self._create_user(username,password,email,**kwargs)

    def create_superuser(self,username,password,email,**kwargs): # 创建超级用户
        kwargs['is_superuser'] = True
        kwargs['is_staff'] = True
        return self._create_user(username,password,email,**kwargs)

# 自定义User数据库
class myUserSql(AbstractUser): 
    username = models.CharField(max_length=128,unique=True)       #用户名
    password = models.CharField(max_length=256)                   #密码
    tel = models.CharField(max_length=11)                         #联系方式
    email = models.EmailField()                                   #邮箱地址
    is_active = models.BooleanField(default=True,)                #是否激活
    is_staff = models.BooleanField(default=True,)                 #权限
    date_joined = models.DateTimeField(auto_now_add=True)         #创建时间
    ##可以添加更多字段,看需求
2.修改配置文件
2.1.设置数据库为Mysql

编辑settings.py文件

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mylover',        #数据库名
        'HOST': '127.0.0.1',    #IP
        'PORT': '3306',                   #端口
        'USER': 'root',          #账号
        'PASSWORD': 'root',      #密码
    }
}

编辑__init__.py文件

import pymysql                                   #没有安装,则在cmd输入pip install pymysql
pymysql.version_info = (1, 4, 13, "final", 0)
pymysql.install_as_MySQLdb()
2.2.注册app
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'lover' ,                                 #添加这一行, lover为app名称                    
]
2.3.迁移数据库

cmd进入项目路径,输入迁移命令

python manage.py makemigrations 
python manage.py migrate
2.4.在setting中重载AUTH_USER_MODEL 方法

编辑settings.py文件

AUTH_USER_MODEL = 'lover.myUserSql'                ## 'lover.myUserSql'为'app名称.类名'

可以看到注册时,输入联系方式已经被写入到数据库
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值