Python Django 框架知識點總結

CS/BS——客戶端和服務器的交互模型

  • client--Browser
  • server--Web後端--python(django、flask)、java、php、go

 

MVC

  • 軟件架構風格--不是標準
  • 將數據操作,業務處理,界面展示進行了拆分
  • 核心思想:解耦合    松耦合
  • Model:模型--封裝數據的交互操作(CRUD)
  • View:視圖--是用來將數據呈現給用戶的
  • Controller:控制器--接受用戶輸入--用來協調Model和View的關係,並對數據進行操作,篩選
  • 流程:(1)控制器接受用戶請求    (2)調用模型、獲取數據    (3)控制器將數據展示到視圖中

 

MTV

  • 本質上就是MVC,變種
  • Model:同MVC中Model
  • Template:模版--只是一個html,充當的是MVC中View的角色,用來做數據展示
  • Views:視圖函數--相當於MVC中Controller

 

Django

  • 基於Python的重量級Web框架,2005年開源,新聞站點--重量級,替開發者想了太多的事情,幫開發者做了很多的選擇,內置了很多的功能
  • 使用版本:LTS  長期支持版本LongTimeSupport
  • HelloDjango:(1)虛擬環境--mkvirtualenv  創建虛擬環境(2)deactivate  退出(3)workon  再次進入(4)rmvirtualenv  刪除虛擬環境
  • 安裝:pip install django--pip install django == x.x.x    或  pip install django == x.x.x -i https://pypi.douban.com/simple
  • 創建項目
    • django-admin startproject XXX
    • 項目結構  manage.py--管理整個項目的文件、以後的命令基本都通過manage.py來調用
    • __init__:初始文件  settings:項目全局配置文件  urls:根路由  wsgl:用在以後項目部署上,前期用不到
  • 啓動項目:python manage.py runserver
  1. 使用開發者服務器啓動項目
  2. 默認會運行在本機的8000端口上
  3. 還可以添加參數  [ [ip:] port]  0.0.0.0 全部電腦    代表本機所有ip
  • 創建一個應用:
    • python manage.py startapp App   
      • APP結構:(1)__init__初始化(2)views:視圖函數(3)models:模型(4)admin:後臺管理(5)apps:應用配置(6)tests:單元測試(7)migrations:__init__  遷移目錄
      • 第一件事:將應用註冊到項目的settings中INSTALLED_APPS中
  • 請求流程:Brower-> urls    urls->views    views->models    models->views    views->response
  • 編寫第一個請求
    • 編寫一個路由  urlpatterns    url(p1, p2)    p1-正則匹配規則    p2-對應的視圖函數
    • 編寫視圖函數  本質上還是一個函數    只是默認第一個參數是一個request    必須返回一個response--HttpResponse  render選人、簡寫
  • 連接數據庫
    • 默認在django中集成數據庫  SQLite  輕量級數據庫  沒有用戶名、密碼  常用的場景:Android、IOS、WP
    • 修改數據庫:在settings中的DATABASES中進行修改,實際上都是關係型數據庫 
      • mysql  驅動  mysqlclient  mysql-python  pymysql:會僞裝、install_as_mysqldb()
      • mysql  USER  PASSWORD  HOST  PORT  NAME  ENGINE
    • 遷移:生成遷移  python manage.py makemigrations    執行遷移  python manage.py migrate  纔會正在在數據庫產生表
  • 數據操作
    • 增刪改查
    • 存儲數據--創建對象進行save()
    • 數據查詢--模型.objects.all()    模型.objects.get()
    • 更新--基於查詢  save()
    • 刪除--基於查詢  delete()
  • 顯示在模版中
    • 先挖坑  {{ var }}
    • 再填坑:(1)渲染模版的時候傳遞上下文進來(2)上下文是有一個字典(3)key就是var,value就是要傳入的值
    • 模版的兼容性很強--不傳入不會報錯,多傳入也會自動優化掉
    • 瀏覽器不認模版--在到達瀏覽器之前,已經進行了轉換,將模版語言轉換成了HTML
    • for 支持
  • python manage.py shell  django終端、繼承了django環境的python終端、通常用來調試
  • 數據級聯:ForeignKey
    • 一對多
    • 多記一
    • 一獲取多:多的set(集合)
    • 多獲取一:就是一個書寫的屬性

 

模型關係

  • 1:1
    • 應用場景
      • 應用於複雜表的拆分
      • 擴展新功能
    • Django中OneToOneField
      • 在使用的時候,關係聲明還是有細微的差別的
    • 實現
      • 使用外鍵實現
      • 對外鍵添加了唯一的約束
    • 數據刪除
      • 級聯表
        • 主表
        • 從表
        • 誰聲明關係誰就是從表
        • 在開發中如何確認主從
          • 當系統遭遇不可避免的毀滅時,只能保留一張表,這個表就是主表
      • 默認特性(CASECADE)
        • 從表數據刪除,主表不受影響
        • 主表數據刪除,從表數據直接刪除
      • PROTECT受保護的
        • 開發中,爲了防止誤操作,通常會設置爲此模式
        • 主表如果存在級聯數據,刪除動作受保護,不能成功
        • 主表不存在級聯數據,可以刪除成功
      • SET
        • SET_NULL
          • 允許爲NULL
        • SET_DEFAULT
          • 存在默認值
        • SET()
          • 指定值

 

Python內存分配

  • 垃圾回收使用引用計數器
  • id([1, 2, 3]) == id([4, 5, 6])
    • 存在賦值符號 = 纔會進行內存劃分
    • 沒有賦值,直接調用會在臨時緩衝區,id獲取臨時緩衝區的內容,id一樣

 

爬蟲

  • 模擬人去請求數據
  • 提取數據
  • 存儲數據
  • 核心
    • 數據爬去
    • 數據提取  xpath、pyQuery
    • 數據存儲
    • 提升效率
      • 進程
      • 線程
      • 協程
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章