Django 忘记管理员或忘记管理员密码 重设密码登录教程

看到标题就知道有逗比忘了密码。。。没错就是我。
你也忘了密码? 不要着急!
0x00:
第一步:运行django shell

python3 manage.py shell
   
   
  • 1

0x01:
第二步:重设密码

>>> from django.contrib.auth.models import User
>>> user = User.object.get(username='your_account')
>>> user.set_password('your_new_password')
>>> user.save()
>>> quit()
   
   
  • 1
  • 2
  • 3
  • 4
  • 5

0x02:
如果你连管理员用户名都忘了。。。
没事别慌。。

>>> from django.contrib.auth.models import User
>>> user = User.objects.get(pk=1)
>>> user
<User: you_account>
>>> user.set_password('your_new_password')
>>> user.save()
>>> quit()
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

还是有办法的。。。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Django 中,可以通过自定义用户认证系统来实现管理员和普通用户登录分离。 首先,需要创建一个新的用户模型,它继承自 Django 自带的 AbstractBaseUser 和 PermissionsMixin,例如: ```python from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin from django.db import models from django.utils import timezone class CustomUser(AbstractBaseUser, PermissionsMixin): email = models.EmailField(unique=True) username = models.CharField(max_length=30, unique=True) is_staff = models.BooleanField(default=False) is_active = models.BooleanField(default=True) date_joined = models.DateTimeField(default=timezone.now) USERNAME_FIELD = 'email' REQUIRED_FIELDS = ['username'] def __str__(self): return self.email def get_full_name(self): return self.username def get_short_name(self): return self.username ``` 然后,需要创建一个自定义认证后端,它继承自 Django 自带的 ModelBackend,例如: ```python from django.contrib.auth.backends import ModelBackend from django.contrib.auth import get_user_model class CustomBackend(ModelBackend): def authenticate(self, request, email=None, password=None, **kwargs): UserModel = get_user_model() try: user = UserModel.objects.get(email=email) except UserModel.DoesNotExist: return None else: if user.check_password(password): return user return None def get_user(self, user_id): UserModel = get_user_model() try: return UserModel.objects.get(pk=user_id) except UserModel.DoesNotExist: return None ``` 在 settings.py 中设置 AUTH_USER_MODEL 和 AUTHENTICATION_BACKENDS,例如: ```python AUTH_USER_MODEL = 'myapp.CustomUser' AUTHENTICATION_BACKENDS = ['myapp.backends.CustomBackend'] ``` 最后,在视图中使用 Django 自带的 login() 和 logout() 函数进行登录和退出,例如: ```python from django.contrib.auth import authenticate, login, logout from django.shortcuts import render, redirect def login_view(request): if request.method == 'POST': email = request.POST['email'] password = request.POST['password'] user = authenticate(request, email=email, password=password) if user is not None: if user.is_staff: login(request, user) return redirect('admin:index') else: login(request, user) return redirect('user_home') else: return render(request, 'login.html', {'error': 'Invalid credentials'}) else: return render(request, 'login.html') def logout_view(request): logout(request) return redirect('login') ``` 在 login_view 视图中,如果用户是管理员,则重定向到 Django 自带的 admin:index 页面,否则重定向到普通用户的主页。在 logout_view 视图中,使用 Django 自带的 logout() 函数退出登录

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值