1. 程式人生 > >flask學習知識點總結

flask學習知識點總結

flask summary

environment

  1. 配置flask單獨的虛擬環境
  2. pip3 install virtualenv
  3. virtualenv –no-site-packages -p python3路徑 py3flask
  4. cd py3flask/Script
  5. activate 進入環境
  6. deactivate 退出環境

使用包列表

  1. 檢視已經安裝包 pip freeze
  2. flask
  3. flask-blueprint 藍圖,作用,將路由細分,分發,管理路由
  4. flask-Script 管理啟動方式
  5. flask-DebugToolbar 檢視測試一些東西
  6. flask-RESTful flask-marshmallow 管理表的工具
  7. flask-Session redis資料庫的driver
  8. flask-SQLAlchemy mysql資料庫
  9. jinja2
  10. PyMySQL mysql資料庫的driver
  11. redis redis資料庫

flask-blueprint 藍圖管理工具

  1. 一個app一個藍圖管理工具
  2. 配置,初始化,註冊
  3. 使用,修飾器的使用

templates static 頁面和靜態檔案

  1. 配置,註冊
  2. 寫到公共檔案的settings裡

引數

引數型別

  1. int
  2. float
  3. string
  4. path
  5. uuid

引數接收

/url/string:name/

訪問方式 methods

PATH

  1. os.path.abspath(file) 當前檔案的絕對路徑
  2. os.path.dirname(path) path檔案路徑的上一級
  3. os.path.join(path, ‘檔名’) 配置路徑

request方法

  • 頁面到伺服器
    1. args
    2. form
    3. files

response 響應

  • 伺服器到頁面,對於請求的反饋
    response = make_response

render_template redirect 跳轉和重定向

  1. render_template(‘index.html’, stus=stus)
  2. redirect(‘/url’) 重定向url
  3. redirect(url_for(‘bluename.function_name’))

異常和錯誤

  1. abort(404) 丟擲錯誤
  2. @app.errorhandler(404) 接收404錯誤
  3. 定義一個函式,返回到一個指定的頁面

redis資料庫的簡單使用

  1. 配置,初始化,註冊
  2. 啟動
  3. 使用, 字典儲存,字典取值
  1. response.set_cookie(‘ticket’, ticket, max_age=”, expires=”) 儲存
  2. response.delete_cookie(‘ticket’) 刪除

jinja2

基礎函式

  1. for
  2. if
  3. loop

過濾器 |

  1. safe 展示樣式
  2. striptags 消除樣式
  3. length 長度
  4. trim 消除空格
  5. first 第一個字母
  6. last 最後一個字母
  7. upper 大寫
  8. lower 小寫
  9. capitalize 首字母大寫

config 全域性

macro 頁面函式

  • 把多次使用的抽取,寫成函式
    1. 定義
    2. 呼叫

mysql 資料庫

兩個包

  1. pip install flask-sqlalchemy
  2. pip install pymysql

配置,初始化,註冊

  1. 初始化 db = SQLAlchemy
  2. 註冊 SQLAlchemy(app)
  3. 配置
    1. app.config[‘SQLALCHEMY_DATABASE_URI’] = ‘mysql+pymysql://root:[email protected]:3306/flask3’
    2. app.config[‘SQLALCHEMY_TRACK_MODIFICATIONS’] = False

資料庫的建立 models.py

  1. 定義表結構
  2. 取別名
  3. 定義初始化方法,用於新增表資料

資料庫的建立和刪除

  1. db.create_all() 建立資料庫裡所有的表
  2. db.drop_all() 刪除資料庫裡所有的表

表的 增

  1. 從頁面拿到值
  2. 呼叫模型的初始化方法,給表裡的欄位賦值
    • db.session.add(str) add_all(list)
    • db.session.commit()

查詢運算子

  • filter(模型名.欄位.運算子(’xxx’)
  • filter(模型名.欄位 運算子 值)
    1. lt le
    2. gt ge
    3. in_
    4. order_by
    5. limit(4).offset(3)
    6. first()
    7. and_ or_ not_

sql原生語句查詢

  1. sql = ‘select * from student where ?=?’
  2. stus = db.session.execute(sql)

filter_by 查詢

  1. stus = Student.query.filter_by(s_id=5)

filter 查詢

  1. stus = Student.query.filter(Student.s_id=5)

get

  1. stu = Student.query.get(id) 傳入主鍵id,若存在,返回該條資訊,否則返回空

表的 改

方法一

  • Student.query.filter_by(s_id=6).update({‘s_name’: ‘哈哈’})
  • db.session.commit()

方法二

  • stu = Student.query.filter_by(s_id=6).first()
  • stu.s_name=’哈哈’
  • db.session.commit()

表的 刪

  • db.session.delete(str)
  • db.session.commit()

分頁 paginate

  • 寫一個方法,在指定的頁面,對指定的資訊進行分頁

方法定義

  1. page = int(request.args.get(‘page’,1)) 當前第幾頁
  2. perpage = int(request.args.get(‘per_page’,3)) 每頁幾條資訊
  3. paginate = Student.query.order_by(‘s_id’).paginate(page,perpage, error_out=False) 資料繫結分頁資訊
  4. stus = paginate.items 總資訊
  5. return …

方法使用,頁面,jinja2

基本引數

  1. pages 總頁數
  2. page 當前頁數
  3. has_prev
  4. has_next
  5. next_num
  6. prev_num
  7. iter_pages 頁數列表
  8. total 總資料條數

資料庫表的擴充套件

一對一

一對多

建立

  1. 在多的表裡建立關聯欄位,連線自己外來鍵到多的表的主鍵
    • s_g = db.Column(db.Integer, db.ForeignKey(‘grade.g_id’), nullable=True) 表名,主鍵名
  2. 在一的表裡建立關係,來訪問與被訪問的關鍵字
    • students = db.relationship(‘Student’, backref=’stu’,lazy=True) 類名

使用

  1. stus = grade.students
  2. grade = stu.stu

多對多

建立

  1. 中間表
    • sc = db.Table(‘sc’,
      db.Column(‘s_id’, db.Integer, db.ForeignKey(‘d4student.s_id’)),
      db.Column(‘c_id’, db.Integer, db.ForeignKey(‘course.c_id’))
      )
  2. 多, 多了個欄位,secondary,關聯中間表
    • students = db.relationship(‘Student’, secondary=sc, backref=’cou’)

使用,和普通表不一樣

  1. 查詢
    • stu = Student.query.get(id)
    • stu.cou
  2. 新增
    • stu = Student.query.get(s_id)
    • cou = Course.query.get(c_id)
    • stu.cou.append(cou)
    • db.session.add(cou)
    • db.session.commit()
  3. 刪除
    • stu = Student.query.get(s_id)
    • cou = Course.query.get(c_id)
    • stu.cou.remove(cou)
    • db.session.commit()

專案重構

思想

  1. 公共的檔案,或重要的,放到特殊的檔案裡
  2. 規範化

舉例

  1. utils
  2. —- init.py
  3. —- App.py 初始化app,繫結app的操作
  4. —- function.py 公共方法,
  5. —- settings.py 配置檔案

debug(被動)

配置

  1. 初始化
  2. 註冊
  3. 開啟

作用

  1. 檢視執行時間
  2. 介面等等

rest_ful 和 marshmellow

  • 對指定的表進行操作,能很方便的進行介面對接,增刪查改等

配置

  1. 初始化
  2. 註冊

使用

  1. 在views裡定義一個類,繼承Resourse (rest_ful)
  2. 類裡定義增刪查改等等方法
  3. 建立一個和views同級的py檔案,繼承marshmellow方法,來修飾返回哪些資料,用來篩選
  4. 類裡的方法返回資料時,呼叫marshmellow的方法,來返回介面資料,
  5. api.add_resource(類名,’/api/hello/param/’)

相關推薦

flask學習知識點總結

flask summary environment 配置flask單獨的虛擬環境 pip3 install virtualenv virtualenv –no-site-packages -p python3路徑 py3flask cd py3fl

2018前端學習知識點總結

部分 屬性選擇器 idt 安裝 頻繁 自定義動畫 像素 require 編輯 前端越發展越復雜,知識點越來越龐雜。 前幾年號稱要一統前端江湖的backbone,估計新入行的童鞋都沒聽說過。前年很火的Angular也逐漸被React和Vue趕超和碾壓。 Backbone

Java日常學習知識點總結——Day01

一、Java一個類的構造方法、初始化程式碼塊、靜態初始化程式碼塊在繼承中的執行順序: (1)靜態初始化程式碼塊  >  初始化程式碼塊  >  構造方法 (2)父類  >  子類 綜合下來的順序便是:

Python初學者學習知識點總結!(零基礎必看)

  計算機顧名思義就是可以做數學運算的機器,因此,計算機程式理所當然地可以處理各種數值,但是計算機能處理的遠遠不止數值,還可以處理文字、圖形、音訊、視訊網頁等各種資料,不同的資料,需要定義不同的資料型別。 python資料型別 1 Number(數字) 2 整數 3

學習知識點總結.

print()#列印 想要列印什麼就放到括號裡,注意漢字和字母需要加引號. int = (整數) input =(輸入) #例:input('請輸入你想輸入的內容') 或者 a = input("請輸入你想輸入的內容") 把字串轉化成數字# 例: a = int(input("請輸入一個數字") str

python的學習知識點總結

建議遵守以下約定: 使用 4 個空格來縮排 永遠不要混用空格和製表符 在函式之間空一行 在類之間空兩行 字典,列表,元組以及引數列表中,在 , 後新增一個空格。對於字典,: 後面也新增一個空格

【人工智慧】機器學習、深度學習 知識點總結及面試題

1、反向傳播思想:計算出輸出與標籤間的損失函式值,然後計算其相對於每個神經元的梯度,根據梯度方向

機器學習、深度學習 知識點總結及面試題

1、反向傳播思想: 計算出輸出與標籤間的損失函式值,然後計算其相對於每個神經元的梯度,根據梯度方向更新權值。 (1)將訓練集資料輸入到ANN的輸入層,經過隱藏層,最後達到輸出層並輸出結果,這是ANN的前向傳播過程; (2)由於ANN的輸出結果與實際結果有誤差,則

機器學習——神經網路、深度學習 知識點總結 及 面試題彙總

1、反向傳播思想: 計算出輸出與標籤間的損失函式值,然後計算其相對於每個神經元的梯度,根據梯度方向更新權值。 (1)將訓練集資料輸入到ANN的輸入層,經過隱藏層,最後達到輸出層並輸出結果,這是ANN的前向傳播過程; (2)由於ANN的輸出結果與實際結果有誤差,則計

常用的機器學習&數據挖掘知識點總結

知識點總結 sca pac -i 期望 最大似然 算法 ucf space Basis(基礎): MSE(Mean Square Error 均方誤差),LMS(LeastMean Square 最小均方),LSM(Least Square Methods 最小二乘法),

阿裏雲雲計算工程師ACP學習筆記--知識點總結

阿裏雲 acp Elastic Compute Server 是一種處理能力可彈性伸縮的計算服務。 CPU內存需要停機,帶寬不需要。垂直:帶寬 CPU 內存 水平:服務器Region 地域 Zone 可用區安全組, 允許包含跨可用區的實例 磁盤 只能掛在同一可用區

flask學習總結

flask學習一、flask介紹 Flask是一個基於Python開發並且依賴jinja2模板和Werkzeug WSGI服務的一個微型框架,對於Werkzeug 本質是Socket服務端,其用於接收http請求並對請求進行預處理,然後觸發Flask框架,開發人員基於 Flask框架提供的功能對請求進行相應的

linux學習—shell腳本知識點總結

本地變量 刪除 blob 日期 $0 返回結果 生效 -o 不能 Shell腳本 --Shell腳本有點像早期的批處理文件,將一些命令匯總起來一次執行,但Shell有更強大的功能,可以類似於程序的編寫,不需要編譯就能執行,使用起來很方便,可以簡化我們日常的管理工作。目錄什麽

Linux學習—磁盤管理知識點總結

文件類型 字段 block 還需 ast host 所在 替換 分區信息 磁盤管理目錄設備文件磁盤介紹磁盤分區創建磁盤分區同步分區表文件系統一、設備文件 設備文件關聯至設備驅動程序,用戶通過操作這些設備文件間接管理對應的硬件設備 一個設備的名稱表示整個磁盤,而分

Linux運維學習筆記-目錄知識點總結

沒有權限 sage lsp ada .com ifcfg-eth post 加載 內存信息 目錄知識點總結: Note: 1.創建一個/server/scripts目錄,用於存放腳本(命令:mkdir -p /server/scripts) 2.安裝軟件時,安裝路徑

Java學習---面試基礎知識點總結

定向 finall 響應 背景 包括 區別 虛引用 protect 多態 Java中sleep和wait的區別① 這兩個方法來自不同的類分別是,sleep來自Thread類,和wait來自Object類。 sleep是Thread的靜態類方法,誰調用的誰去睡覺,即使在a線

Mysql學習---面試基礎知識點總結

drop let 分組 知識點總結 樣式 delet 基礎 order by count 1、drop、truncate、 delete區別 TRUNCATE TABLE 在功能上與不帶 WHERE 子句的 DELETE 語句相同:二者均刪除表中的全部行。但 TRUNCAT

Redis學習---面試基礎知識點總結

精度 rop href list ping 技術方案 分布 專業 了解 【學習參考】 https://www.toutiao.com/i6566017785078481422/ https://www.toutiao.com/i6563232898831352323/ 0.

機器學習的理論知識點總結

最近一邊看書,一邊梳理機器學習的知識點: 1. 線性迴歸 2.線性迴歸的損失函式(誤差的平方和) 3. 最小二乘法(手推導) 4.批量梯度下降法(學習率大小問題) 5.放縮scaling對梯度下降的影響 6.多元線性迴歸 7.邏輯斯蒂迴歸-二元分類 8.LR代價函

大資料學習路線指南(最全知識點總結

大資料是對海量資料進行儲存、計算、統計、分析處理的一系列處理手段,處理的資料量通常是TB級,甚至是PB或EB級的資料,這是傳統資料處理手段所無法完成的,其涉及的技術有分散式計算、高併發處理、高可用處理、叢集、實時性計算等,彙集了當前IT領域熱門流行的IT技術。   大資料入門,需要