天天看點

學習django部分筆記之AXF項目AXF

AXF

開發流程

  • 産品經理産出需求文檔
  • 産品根據需求需求文檔做出原型圖
  • 原型圖交給設計對頁面互動,細節進行設計
  • 之後會交到開發手中
    • 分析需求,設計資料模型
    • 從資料開始開發
    • 封裝資料操作
    • 做資料展示

需求分析

  • 使用者系統
  • 商品系統
  • 首頁展示
  • 購物車
  • 訂單系統
  • 位址系統
  • 優惠券
  • 積分系統,等級系統

搭建項目

  • 導入靜态資源

适配

  • 前端學過的機關
    • px
    • em 相對機關 相對于父級元素,預設 16px
    • rem 相對機關,和em很像 相對于root 根級元素
  • 将螢幕寬度分為十份

添加到購物車

  • 購物車
    • 展現的是使用者和商品的關系
    • 商品
    • 使用者還沒有
  • 添加到購物車
    • 判斷使用者是否登入
    • 未登入應該跳轉到登入頁面
    • 如果已經登入,添加到購物車
    • 通過使用ajax實作

閃購頁面

  • 級聯篩選+排序
  • 篩選需要條件
  • 見名知意
  • 排序
  • 前端端需要協商定制的一個字段(背景定制)
  • 定制接口

使用者子產品

  • 基礎使用者字段
    • name
    • password
    • email
    • icon
  • 激活權限
  • 邏輯删除
  • 使用者權限
    • 讀權限
    • 寫權限
    • 删除權限
    • 删除别人的文章
    • xxx

先實作靜态頁面

Django中面向對象

  • 模型繼承
  • 模闆繼承
  • 視圖函數
    • FBV 給予函數的視圖函數
    • CBV 給予類的視圖函數
      • 請求流程
      • Browser -> urls -> Views( Class ) -> Response -> Browser
      • urls -> UserView.as_view()
        • 判斷參數是否是合法(是不是請求方法)
        • 判斷關鍵字參數的key在我們類中是否存在
        • 定義新的view,用來做傳回處理
        • 預設head請求功能和get一樣
        • dispatch 分發
        • 根據方法的名字去判斷
          • 是否存在于我們django支援的方法中
          • 擷取方法對應函數
            • 擷取到了
              • 将參數傳遞給處理函數
            • 未擷取到
              • 直接傳回405 請求方法不被支援

網絡狀态嗎

  • 2xx
    • 成功
  • 3xx
    • 資源發生轉移,遷移
  • 4xx
    • 用戶端錯誤
  • 5xx
    • 伺服器錯誤
  • 其餘6xx-9xx
    • 預定額
    • 901 單終端登入

程式開發

  • 低耦合
  • 高内聚

程式結構

  • 如果程式中出現了上帝檔案,上帝類
    • 建立App
      • 跨App調用
      • 循環引用
    • 建立多個Views
    • 将資料擷取,資料篩選進行隔離

使用者激活

  • 激活政策
    • 郵件
    • 短信驗證碼
  • 郵件激活
    • 注冊的時候給你的郵箱發送一個郵件
    • 郵件中包含激活連結
      • 激活連結上有一個參數
      • 辨別支援過期
      • 映射關系,辨別參數可以映射到使用者

購物車

  • 購物車和使用者
  • 一個使用者一個購物車
  • 一個購物車對應多個商品
  • 一個商品可以被多個使用者買
  • 商品和使用者多對多的關系
  • 有一張額外的關系表
    • 存儲可使用者的唯一的辨別
    • 存儲了商品的唯一辨別
    • 關系表就是購物車表(資料)
  • 購物車表設計
    • 商品辨別
    • 使用者辨別
    • 商品數量
    • 此條商品資料是否選中
  • 下單
    • 将選中的商品生成一個訂單
    • 使用者和訂單一對多
    • 一個訂單對應多個購物車資料,一對多
  • 訂單表設計
    • 使用者辨別
    • 訂單号
    • 訂單時間
    • 訂單狀态
  • 訂單商品表
    • 訂單辨別
    • 商品辨別
    • 商品數量

全選邏輯

  • 隻要有未選中的,全選按鈕就是未選中狀态
    • 點選的時候,全選按鈕變亮
    • 未選中的全都變成選中
  • 如果全都是選中的
    • 點選全選應該所有都變成未選中
  • 實作方案兩種
    • 用戶端實作
    • 服務端實作

支付

  • web支付
    • 需要注冊開發者賬号
    • 需要企業營業執照(個人營業執照)
    • 建立應用
      • 支付權限不可用
      • 需要你提供一個文檔在什麼情景下需要支付
      • 測試賬号
    • 支付流程
      • 拿着訂單資訊,去調用支付寶的接口
      • 訂單資訊需要按照支付寶的格式進行簽名
      • 調用支付之後,回給你一個回調函數
      • 使用回調函數修改訂單狀态
  • 移動支付
    • 支付流程可以繞過伺服器
    • 支付之前需要将訂單資訊傳遞給伺服器
    • 伺服器記錄訂單資訊
    • 允許用戶端調用支付
    • 用戶端調用支付之後記得通知給伺服器
  • 支付實際上就是調用支付API
    • 實際上都是固定的模闆
  • 想快速內建多種支付
    • 可以 ping++

算法

  • 編碼
    • base64
    • urlencode
  • 摘要
    • md5
      • 128位的二進制
      • 32位的16進制,每一個16進制可以很友善的轉換成unicode
    • sha
    • 單向不可逆
    • 不管輸入多長,輸出的長度都是固定的
  • 加密
    • 對稱加密
      • DES,AES
      • 隻有一個鑰匙
    • 非對稱加密
      • RSA
      • 鑰匙是成對的

技能點

  • 模闆中的
    • {{ block.super }}
    • 繼承父模闆中塊中的内容,不覆寫内容,預設三次及以上出現的模闆會覆寫内容
  • django ORM中
    • 顯性屬性(顯性對象)
      • 開發者主動聲明的屬性
    • 隐性屬性(隐性對象)
      • 開發者沒有聲明,django架構自動為開發者聲明的
  • django模闆中點文法
    • 代表屬性和方法
    • 代表索引
    • 代表字典的key
  • jQuery中擷取屬性
    • attr
      • 擷取任意屬性
    • prop
      • 隻能擷取内置屬性
  • 端口掃描
    • nmap
  • property
    • 将函數變成屬性
    • 添權重限
      • 沒有setter就是隻讀
      • 有了setter才能設定
  • 浮點型資料操作
    • 可能會出現精度問題
    • 保留兩位小數
    • Decimal

Celery

  • 配置
    • init 中初始化celery
    • settings中配置Celery
  • 使用
    • 在App中建立自己的tasks
    • 使用share_task裝飾函數

AOP

  • 中間件
    • process_request
      • 反爬
      • 統計
      • 過濾器(攔截器)
      • 黑白名單
    • process_view
      • CSRF
    • process_template_response
    • process_response
      • 統一配置
      • 跨域
      • 過期時間
    • process_exception
      • 頁面友好化
  • 實作中間件
    • 建立中間件
    • 注冊中間件
    • 在中間件中書寫實作的功能

基于請求頻率的反爬

  • 需求,一個ip一分鐘隻能通路10次

蜜罐抓豬

  • 傳回的資料和顯示的資料不對稱的
  • 中間包含了一些僞資料
  • 僞資料隻要被通路,立馬拉黑請求者

繼續閱讀