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名称.类名'
可以看到注册时,输入联系方式已经被写入到数据库

1619

被折叠的 条评论
为什么被折叠?



