Sass

项目名称:sass

项目描述:

Bug管理平台串讲

  • 基础

  • 面向对象

  • 网络和并发

  • 数据库

  • 前端 & django

  • sass

    • 技术点

    • 常见问题

    • 撰写简历:按照规则去编写。

  • 路飞学城

  • 爬虫 & 数据分析

  • 自动化测试开发(自动化相关补课)

  • 简历 & 面试注意事项

1. 相关技术点

  1. 虚拟环境

    • 为什么用虚拟环境?

      - 每个项目都会创建一个虚拟环境且各自的虚拟环境是相互隔离。
      - 项目开发:
      - 我让大家通过virtualenv在电脑的某个目录下创建虚拟环境,激活并使用即可(线上)。
      - 虚拟环境创建在当前项目目录。(本地开发可以把虚拟环境放在项目,git管理时忽略虚拟环境)
    • 你用什么做的虚拟环境?

      virtualenv
    • 了解其他的虚拟环境吗?

      pipenv
      venv 【python3.3之后Python内置虚拟环境工具】
      cd crm
      python -m venv .venv
  2. 版本相关

    • python3.6

      • 为什么选择用py3.6 ?

        最新 3.7
        选择 3.6(项目稳定性,当时最新的事3.7,如果遇到问题也可以在社区中搜到相关解决方案)

        注意事项:时间。
      • 3.6具有的功能

        • asyncio支持 async/await语法。

        • f格式化

    • django1.11.7

      • django3(asgi)

        • 异步功能(asgi + 达芙妮) -> 不够成熟

      • django2(wsgi)

        • url路由

        • 数据库的级联删除 on_delete

      • django1.10 + (wsgi)

        • django的中间件

      • django1.9 (wsgi)

      • django1.6(wsgi)

    • MySQL(次顶配)

      • pymysql( install_as_mysqldb() )

    • redis

      • windows开发,为了简单3.x

      • 最新5.x

  3. local_settings

    本地配置和线上配置
  4. git版本控制

    • 都有那些工具可以做版本控制?

      • vss

      • svn,集中式版本控制。

      • git,分布式版本控制。

    • 你们公司用什么做的代码仓库/代码的托管?

      • 第三方的平台(花钱)

        • github(公共)

        • gitee(公共/私有-协同开发者最多5人)

        • coding

        • ...

      • gitlab(开源软件)

        自己搭建的代码托管平台
        - 优点:不用花钱买其他人服务,数量等无任何限制。
        - 缺点:自己需要有服务器 + 系统维护
    • 项目是几个人开发的?如何基于git做的协同开发?

      • 几个人做的?

        • 产品经理,去设计产品都有那些功能?并产出一个axure原型图。

        • UI设计,将原型图中的每个部分进行细化,例如:字体大小、背景颜色、图标圆角。【蓝湖平台】

        • 前端开发,

          • 不前后端分离:根据UI设计的页面把所有静态页面编写出来,就是写出来html、css、js。

          • 前后端分离:根据UI设计的页面把所有静态页面编写出来,就是写出来html、css、js + vue.js代码 + 调用后端API

        • 后端开发,

          • 不前后端分离,将前端写的html、css、js文件集成到项目,例如:templates、statics

          • 前后分离,编写API给前端调用。

        • 测试人员 将编写的好程序放在测试环境去运行起来,由测试人员去对项目中的各个功能进行测试。

        • 运维人员 项目部署:centos + mysql + python + django + 虚拟环境 =>给他代码,将代码运行在线上服务器。

      • 案例

        - 产品
        - 前端
        - 后端
        - 运维(测试)
        几个人开发:
        - 1个前端
        - 2个后端
        - Bug管理平台(你),为客户开发面向客户端。
        - 后台运行中心(另外一个人),销售和运营管理部分。
      • 协同开发

        • 小项目,你一个人就能搞定。

        • 中大型项目,N个人配合开发(协同开发)

          - 每个人都有自己的一个分支,来开发自己的功能。
          - 功能开完完成之后,通过提交pr(pull request )让组长(老大)进行代码的review。

          注意:是在git基础上做的。
          https://www.bilibili.com/video/BV19E411f76x
  5. 用户认证系统

    • ajax向后台发送请求后台通过ModeForm进行校验

    • ajax发送请求

      $.ajax({
      url:"",
      type:"",
      data:{},
      dataType:"JSON",
      success:function(res){
      ...
      }
      })
    • csrf token

      • 在提交的数据中要携带token

      • 注释中间件 / 装饰器

    • ModelForm表单验证

      • 为所有Form和ModelForm编写基类BootStrapForm用于为每个字段设置样式。

      • 编写钩子函数,clean_字段名

    • 获取验证码

      • 基于腾讯云短信发送短信

      • 基于redis去存储短信验证码(60s)

    • 基于PIL模块实现图片验证码( 扩展:极验验证 )

    • django中Q查询构造复杂条件

    • django配置文件实现自动化短信模板的选择。

  6. 管理中心

    • 扩展django的widget实现自动化页面渲染插件,完成颜色搭配选择。

    • 星标和我创建以及我参与项目的筛选。

      class Project(models.Model):
        """ 项目表 """
        COLOR_CHOICES = (
            (1, "#56b8eb"), # 56b8eb
            (2, "#f28033"), # f28033
            (3, "#ebc656"), # ebc656
            (4, "#a2d148"), # a2d148
            (5, "#20BFA4"), # #20BFA4
            (6, "#7461c2"), # 7461c2,
            (7, "#20bfa3"), # 20bfa3,
        )

        name = models.CharField(verbose_name='项目名', max_length=32)
        color = models.SmallIntegerField(verbose_name='颜色', choices=COLOR_CHOICES, default=1)
        desc = models.CharField(verbose_name='项目描述', max_length=255, null=True, blank=True)

        use_space = models.BigIntegerField(verbose_name='项目已使用空间', default=0, help_text='字节')

        star = models.BooleanField(verbose_name='星标', default=False)

        join_count = models.SmallIntegerField(verbose_name='参与人数', default=1)
        creator = models.ForeignKey(verbose_name='创建者', to='UserInfo')
        create_datetime = models.DateTimeField(verbose_name='创建时间', auto_now_add=True)

        bucket = models.CharField(verbose_name='cos桶', max_length=128)
        region = models.CharField(verbose_name='cos区域', max_length=32)

        # 查询:可以省事;
        # 增加、删除、修改:无法完成
        # project_user = models.ManyToManyField(to='UserInfo',through="ProjectUser",through_fields=('project','user'))


      class ProjectUser(models.Model):
        """ 项目参与者 """
        project = models.ForeignKey(verbose_name='项目', to='Project')
        user = models.ForeignKey(verbose_name='参与者', to='UserInfo')
        star = models.BooleanField(verbose_name='星标', default=False)

        create_datetime = models.DateTimeField(verbose_name='加入时间', auto_now_add=True)
  7. 项目导航

    • 基于inclusion_tag和sample_tag实现读取向项目列表和展示。

    • 通过URL进行项目的选择和展示。

    • 基于django的中间件process_request/process_view实现权限的校验并且将 用户信息 & 项目信息 封装到Tracer对象中并附加到request对象,便于后续在视图、模板、templatetags中快速获取数据。

    • 基于URL和菜单的对应关系 & 匹配 实现模块项目模块功能的选中展示。

  8. 文件管理

    • 基于腾讯的cos对象存储进行文件的持久化管理。

      • 去咱们的接口获取凭证

      • 基于凭证去cos对象存储进行上传文件

      • 再向咱们的接口发送请求,上传文件名和相关ID存储到数据库,然后在页面上进行分级展示。

    • 为什么要用cors?

      由于浏览器具有同源策略的限制,所有会出现跨域的情况。
      cors是用于解决跨域。
      注意:咱们在项目开发中是如何设置;
      - 手动方式,进入腾讯对象存储的后台来设置。
      - 创建项目:创建桶 + 对桶中的跨域进行配置。

      Sass

    • 通过content_type和Content-Disposition实现文件实现下载。

    • 层级目录操作以及多层嵌套文件和文件夹的删除(API在桶中将文件删除)。

    • 处理对象存储中的碎片文件以及桶的删除操作。

  9. wiki管理

    • 基于mdeditor实现wiki内容的管理及图片的上传操作。

    • 开发了一个基于Django通用markdown组件,自定义:Field、Form、widget插件、集成静态文件。

    • 多层管理结构的操作。

      • 递归。(在后台把wiki的层级管理先构造好,前端循环显示)

      • 数据类型的嵌套。(在后台把wiki的层级管理先构造好,前端循环显示)

      • 前端js和id选择器实现。(直接去数据库获取数据,前端展示)

  10. 问题管理

    • 通过自定义CheckFilter和SelectFilter可迭代器对象及生成器实现组合筛选的功能。

      • 可迭代对象

      • 生成器

      • 深浅拷贝

      • 前端的js配合

      • url操作:url.encode()

    • 使用自定义SelectFilter类和Select2组件实现动态条件搜索筛选。

    • 基于sample_tag实现序号的规则化处理。

    • 自定义通用的分页组件实现多框架的统一使用。

    • 结合mdeditor、datetimepicker、bootstrap-select组件实现问题管理。

    • 在使用组件时是结合前端+ModelForm后端的attr属性实现。

    • 【重点】通过shown.bs.modal事件来解决md和bootstrap组件的兼容问题导致md组件无法初始化。

    • 在项目中使用自动生成邀请码的机制实现成员邀请。

      • ajax

      • 前端展示和拼接

      • 前端的内容的拷贝

    • 保存所有的问题信息的更新记录及自定义MD组件的事件实现描述的变更。

    • 问题变更记录和多级回复和评论(js实现的多级)。

      • 短信

      • 邮件

      • 微信

  11. 概览和统计

    • 基于daterangepicker进行实现的选择并使用highcharts实现数据报表的展示。

    • 根据项目的数据信息进行概览数据统计,例如:问题数量、空间容量、项目和动态信息。

      注意:给你一个示例代码,实现动态数据统计。

  12. 购买套餐

    • 基于支付宝实现套餐的支付。

      • 基于redis做的购物车(redis中存储数据的结构和流程到底是什么?)

      • 支付宝对数据rsa加密(支付宝私钥、商户公钥)

    • 当支付的时,如果用户支付成功之后,在未执行回调函数时(更新状态),服务器宕机。

      支付宝会在24小时以内不间断的向我们的API发送请求,直到我们给他返回成功。
    • 点击购买时出现订单重复?

      在redis中设计的购物车中只有当前想要购买的商品,如果再次点击购买时,会将原来的购买信息覆盖。

上一篇:django的ORM中的2个易混点


下一篇:Django第三方登录