基本模型操作:
- 创建用户:
from django.contrib.auth.models import User
user = User.objects.create_user(username='',password='',email='',.....)
- 创建超级用户:
from django.contrib.auth.models import User
user = User.objects.create_superuser(username='',password='')
- 删除用户:
from django.contrib.auth.models import User
try:
user = User.objects.get(username='用户名')
user.is_active = False
user.save()
print("删除普通用户成功")
except:
print("删除普通用户失败")
- 校验密码:
from django.contrib.auth.models import User
user = authenticate(username=username,password=password)
- 修改密码:
from django.contrib.auth.models import User
try:
user = User.objects.get(username='')
user.set_password('')
user.save()
return HttpResponse('修改密码成功')
except:
return HttpResponse('修改密码失败')
- 登录状态保持:
from django.contrib.auth import login
def login_view(request):
user = authenticate(username=username,password=password)
if user:
login(request,user)
- 登录状态校验:
from django.contrib.auth.decorators import login_required
@login_required
def index_view(request);
login_user = request.user
- 登录状态取消:
from django.contrib.auth import logout
def logout_view(request);
logout(request)
- 扩展字段:
- 方案一: 自己创建个应用,再创建个表,把自己创建的表和内建的表做一个1对1,一对一映射,让新表的数据和内建的表产生关联。
- 方案二(推荐):继承內建的抽象user模型类(抽象user模型类指的是可以把它的所有字段继承过来)
- 步骤:
- 添加新的应用。
- 定义模型类,继承AbstractUser
- settings.py中指明AUTH_USER_MODEL=’应用名.类名’
- 注意:此操作要在第一次makemigrations migrate之前进行。确保当前那个auth_user表没有被初始化出来。
- 举例:
- 创建应用(记得注册):
python manage.py startapp user
- 定义模型类:
from django.db import models
from django.contrib.auth.models import AbstractUser
class UserInfo(AbstractUser):
phone = models.CharField(max_length=11,default='')
3. 在settings中配置: AUTH_USER_MODEL='user.UserInfo'
4. 数据库迁移,生成表: python manage.py makemigrations ; python manage.py migrate
5. 添加用户:(在django shell中就挺方便,python manage.py shell启动)
from user.models import UserInfo
UserInfo.objects.create(username='',password='',phone='')
Original: https://blog.csdn.net/weixin_44032178/article/details/122574736
Author: BreezeChasingDrizzle
Title: django8.1 内建的用户系统
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/736133/
转载文章受原作者版权保护。转载请注明原作者出处!