Django第三方登录

以QQ登录为例:关键点就是获取到QQ的凭证openid,然后将openid跟我们的用户模型联系起来。
若想实现QQ登录,需要成为QQ互联的开发者,审核通过才可实现。
这是QQ登录的开发者文档:http://wiki.connect.qq.com/准备工作_oauth2-0

使用QQ登录的流程:
在这里插入图片描述
新创建一个模型类用于记录用户与第三方登录ID的关联关系:
创建模型的时候可以设置db_index=True来自动创建索引。

from django.db import models
from meiduo_mall.utils.models import BaseModel

class OAuthQQUser(BaseModel):
    """
    QQ登录用户数据
    """
    user = models.ForeignKey('users.User', on_delete=models.CASCADE, verbose_name='用户')
    openid = models.CharField(max_length=64, verbose_name='openid', db_index=True)

    class Meta:
        db_table = 'tb_oauth_qq'
        verbose_name = 'QQ登录用户数据'
        verbose_name_plural = verbose_name

其中继承的BaseModel是创建的一个模型类基类,专门用于记录模型的创建更新时间。
这种模型类基类的创建需要添加方法进行说明:

from django.db import models

class BaseModel(models.Model):
    """为模型类补充字段"""
    create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
    update_time = models.DateTimeField(auto_now=True, verbose_name="更新时间")

    class Meta:
        abstract = True  # 说明是抽象模型类, 用于继承使用,数据库迁移时不会创建BaseModel的表

猜你喜欢

转载自blog.csdn.net/weixin_43269166/article/details/88412634