2020.6.27 QQ 互联

发布于 2020-06-26  30 次阅读


1.复习内容

2.灵感代办

3.学习内容

  • QQ登录流程

    • image-20200627093343466
  • 登录流程梳理

    • 1.使用了QQLoginTool 认证工具辅助类来拼接地址
    • 2.整体分三步,拿到authorizationcode ,Access Token ,openid
    • 3.回调地址,用来接收openid进行操作
    • 4.openid存放在前端html页面中,并用jwt加密(itsdangerous)
    • 5.将openid和用户进行关联(存放在数据库中)
    • 6.判断qq用户登录openid是否绑定了用户,有则关联,没则创建之后关联
  • 细节知识点梳理

    • 模型Meta中定义abstract = True ,模型不被执行
    • 登录之后的用户名 存放在cookie中
    • celery必须要开启服务端,才可以执行任务

4.扩展延伸知识

  • Django中_Meta 部分用法

    • _meta是django中model类的实例,用来查看models的相关属性
    • 常用参数
      • model.UserInfo._meta.app_label                     
        
        #获取该类所在app的app名称
        
        
        model.UserInfo._meta.model_name
        
        #获取该类对应表名(字符串类型)
        
        
        model.UserInfo._meta.get_field('username')
        
        #获取该类内指定字段信息(对象)
        
        
        model.UserInfo._meta.fields
        
        #获取该类内所有字段对象
        
        
        model.UserInfo._meta.get_fields
        
        #获取该类内所有字段信息(对象),包含反向关联的字段
        
        
        model.UserInfo._meta.many_to_many
        
        #获取该类内多对多字段信息
        
        
        model.UserInfo._meta.get_field('username').verbose_name
        
        #获取该类内‘username’字段,verbose_name 的值
        
        

    • https://www.kancloud.cn/sindwerra/django/600581
  • js怎么获取cookie

    • cookie特征
      • 1.用;来分割
      • 2.是键值对形式
  • Js match方法

    • stringObj.match(rgExp) 字符串对象和正则表达式
    • 匹配下标0 是匹配元素
    • 匹配下标1 是匹配元组元素
    • 返回input(源字符串)、index(索引位置)和lastIndex(最后匹配最后字符+1位置)
  • 为什么使用try..else

    • else是无异常情况下执行,而else外的是有没有异常都执行
  • celery使用

    • img
    • 简介:

      • 分布式队列,实时操作,百万级任务
    • 优点

      • 简单,高可用,快速,灵活
    • 应用场景

      • Web耗时任务,定时任务,任务场景
    • 工作原理

      • Task 任务 (异步任务,定时任务)
      • Broker 消息中间件 (存放任务,等待Worker执行)
      • Worker 监视任务,执行任务(分布式)
        • 从消息队列取出任务执行,可以执行多个,
      • Backend 保存任务结果
        • Redis Memcached 等等
    • 目录结构

      • __init__ 可以用来初始化Celery
      • config.py 配置文件
      • tasks.py 任务执行代码
    • celery初始化代码

      • #!/usr/bin/env python3
        
        
        # -*- coding:utf-8 -*-
        
        
        # Author:wd
        
        from celery import Celery
        app = Celery('project')                                # 创建 Celery 实例
        app.config_from_object('project.config')               # 加载配置模块

    • config配置文件

      • BROKER_URL
      • CELERY_RESULT_BACKEND
    • 任务文件

      • 被@app.task 修饰的函数
      • app是Celery的实例对象
    • 启动celery

      • celery worker -A project -l debug
        • worker 代表启动角色 (beat等)
        • -A 项目路径
        • -l 日志等级
        • celery –help
    • 添加任务(开始执行)

      • task中的函数.delay(‘’) 开始执行任务
      • 返回对象 AsyncResult
        • state: 返回任务状态;
        • task_id: 返回任务id;
        • result: 返回任务结果,同get()方法;
        • ready(): 判断任务是否以及有结果,有结果为True,否则False;
        • info(): 获取任务信息,默认为结果;
        • wait(t): 等待t秒后获取结果,若任务执行完毕,则不等待直接获取结果,若任务在执行中,则wait期间一直阻塞,直到超时报错;
        • successfu(): 判断任务是否成功,成功为True,否则为False;
  • Scrapy 请求头

    • 请求Cookie Cookie = response.request.headers.getlist('Cookie')
    • 响应Cookie Cookie = response.headers.getlist('Set-Cookie')
  • python 异常问题

    • 凡是涉及流,文件等有异常的操作,一定要捕获,
    • 经常导致意外情况发生

5.知识内容个人梳理

6.今天都复习了之前的什么内容


Ares个人进阶之路