Django之用户认证、电子邮件发送笔记

/ 0评 / 0

一、Django用户认证

  1. Django自带用户认证系统。它处理用户账号、组、权限以及基于cookie用户会话。
  2. 作用:
    1. 添加普通用户和超级用户;
    2. 修改密码;
  3. User模型类
    • 位置:from django.contrib.auth.models import User
  4. 默认User基本属性:

    属性名 类型 是否必选
    username 用户名
    password 密码
    Email 邮箱 可选
    First_name
    Last_name
    Is_superuser 是否管理员
    Is_actvie 是否活跃
    Last_login 上一次登录时间
    Data_joined 用户创建的时候
  5. Auth基本模型操作

    • 创建普通用户create_user

      from django.contrib.auth.models import User
      user = User.objects.create_user(username='用户名', password='密码', email='邮箱',...)
      
    • 创建超级用户create_superuser

      from django.contrib.auth.models import User
      user = User.objects.create_superuser(username='用户名', password='密码', email='邮箱',...)
      
    • 删除用户

      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
      try:
          user = User.objects.get(username='xiaonao')
          user.set_password('654321')
          user.save()
          return HttpResponse("修改密码成功!")
      except:
          return HttpResponse("修改密码失败!")
      
    • 检查密码是否正确check_password

      from django.contrib.auth.models import User
      try:
          user = User.objects.get(username='xiaonao')
          if user.check_password('654321'):  # 成功返回True,失败返回False
          return HttpResponse("密码正确")
      else:
          return HttpResponse("密码错误")
      except: 
          return HttpResponse("没有此用户!")
      
  6. auth扩展字段
    如果需要在默认auth表上扩展新的字段。整个扩展操作一定是开始就确定,并在生成系统的auth_user表之前完成。即先扩展(设置,模型类编写),然后再执行migrate命令,生成表。如phone。

    1. 添加新的应用
    2. 定义模型类 继承AbstractUser
    3. settings.py中指明AUTH_USER_MODEL = '应用名.类名'
    4. #models.py案例
      from django.db import models
      from django.contrib.auth.models import AbstractUser
      ​
      #Create your models here.
      class UserInfo(AbstractUser):
          phone = models.CharField(max_length=11, default='')
      
      #settings.py添加配置
      AUTH_USER_MODEL = 'user.UserInfo'
      ​
      #添加用户
      from user.models import UserInfo
      UserInfo.objects.create_user(username='guoxiao',password='123456', phone='13488871101')
      

二、电子邮件发送

  1. 利用QQ邮箱发送电子邮件
  2. django.core.mail子包封装了”电子邮件“自动发送的SMTP协议
  3. 前期准备:
    1. 登录QQ邮箱并修改设置
      • 用申请到的QQ号和密码登陆到 https://mail.qq.com/
      • 修改 QQ邮箱->设置->帐户->“POP3/IMAP......服务”
    2. 设置Django服务器端的,用简单邮件传输协议SMTP发送电子邮件
  4. settings.py设置

    #发送邮件设置
    EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' # 固定写法
    EMAIL_HOST = 'smtp.qq.com' # 腾讯QQ邮箱 SMTP 服务器地址
    EMAIL_PORT = 25  # SMTP服务的端口号
    EMAIL_HOST_USER = 'xxxx@qq.com'  # 发送邮件的QQ邮箱
    EMAIL_HOST_PASSWORD = '******'  # 在QQ邮箱->设置->帐户->“POP3/IMAP......服务” 里得到的在第三方登录QQ邮箱授权码
    EMAIL_USE_TLS = True  # 与SMTP服务器通信时,是否启动TLS链接(安全链接)默认false
    
    #视图函数中配置
    from django.core import mail
    mail.send_mail(
            subject,  #题目
            message,  # 消息内容
            from_email,  # 发送者[当前配置邮箱]
            recipient_list=['xxx@qq.com'],  # 接收者邮件列表
            )
    

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注