我愛Flask框架之Flask簡介與URL和檢視介紹

2020-10-14 11:00:13

一:虛擬環境介紹

黃色部分重點注意
虛擬環境與全域性環境:

我們通過pip安裝了一個python庫,可能在編輯器中不能使用(如:pycharm,vscode…)這是因為:
通過pip安裝的庫預設一般安裝在全域性環境中,而PyCharm一般會預設建立虛擬環境,所以兩者的環境不一致,導致安裝的包不能正常匯入使用,解決辦法有一般有2種:
       •給PyCharm安裝虛擬環境,使庫安裝虛擬環境中
       •將PyCharm的環境設定為全域性環境,即我們通常使用的Python,設定為Python的安裝目錄即可:
如圖下 紅框即為全域性變數
在這裡插入圖片描述

安裝虛擬環境的原因:

       •一般情況下,Python第三方庫安裝是直接通過pip install xxx的方式進行安裝的,這樣會使庫安裝在python全域性環境中。
這樣做面臨的問題:如果用Flask 1.10寫了個網站,但是同時有一個Flask 0.9開發的專案需要開發維護,並且有可能Flask 1.10不再相容Flask 0.9的一些語法,這就需要同時擁有Flask 1.10和Flask 0.9兩種不同環境,這時我們就需要通過虛擬環境來解決此類問題。

虛擬環境的安裝:

       •python中虛擬化管理工具很多,最常用的是pipenv

pipenv的安裝:

       •Windows下安裝:

pip install pipenv

       •Mac下安裝

brew install pipenv

       •Linux下安裝

pip install pipenv

虛擬環境建立前的準備:

虛擬環境預設會安裝到系統磁碟(C槽)下的當前使用者目錄下的== .virtualenvs 目錄下,如果想指定安裝到其他目錄,可以設定系統環境變數==,在系統變數中新增變數,變數名為WORKON_HOME,值為需要指定安裝的目錄(資料夾)
名字可以自己取 自己可以找到的資料夾
如圖所示:
在這裡插入圖片描述

虛擬環境的建立:

       •WIN+R 輸入cmd進入
在這裡插入圖片描述
       •進入需要建立虛擬環境的資料夾:
在這裡插入圖片描述

       •安裝pipenv之後即可建立虛擬環境。建立虛擬環境使用命令pipenv shell 如圖所示:
在這裡插入圖片描述
       •安裝完成後使用pip list命令,即可看到此虛擬環境安裝的庫
在這裡插入圖片描述

       •虛擬環境安裝好之後,可在PyCharm中設定虛擬環境為當前建立的虛擬環境,即定位選擇虛擬環境下的python.exe可執行檔案,方法與前面相同

pipfile與pipfile.lock

       •在建立虛擬環境後,虛擬環境目錄下會生成pipfile檔案,內容如下:

[[source]]
name = "pypi"
url = "https://pypi.org/simple"   # 在預設情況使用國外源下載庫會非常慢,可以指定國內pip源,
verify_ssl = true 

[dev-packages]  # 開發環境

[packages] # 生產環境

[requires] # Python版本
python_version = "3.7"

       •pipfile.lock詳細記錄環境依賴,並且使用了Hash演演算法以保證完整的對應關係
       •如果需要將安裝的庫記錄到Pipfile中,可以使用pip install --dev 庫名將庫安裝到開發環境
       •在虛擬環境中用run引數執行專案範例如下:

pipenv run python manage.py runserver

       •pipenv有一個缺點:
       •lock不穩定而且時間非常長,所以安裝包的時候記得加上==–skip-lock==,如下:

pipenv install django --skip-lock

       •最後開發完成要提交到倉庫的時候再執行pipenv lock命令

Flask的介紹

flask是一款非常流行的Python Web框架,誕生於2010年,作者是Armin Ronacher,這個專案最初只是作者在愚人節的一個玩笑,後來由於非常受歡迎,逐漸成為一個正式的專案。
flask自2010年釋出第一個版本以來,大受歡迎,深得開發者的喜愛,並且在多個公司已經得到了應用,flask能如此流行的原因,可以分為以下幾點:
       •微框架、簡潔,只做它需要做的,靈活度非常高,給開發者提供了很大的擴充套件性
       •Flask不會幫開發者做太多的決策,一切都可以按照自己的意願進行更改。
       •使用Flask開發資料庫的時候,具體是使用SQLAlchemy還是MongoEngine,選擇權完全掌握在開發者自己的手中。區別於Django,Django內建了非常完善和豐富的功能,並且如果想替換成開發者想要的,要麼不支援,要麼非常麻煩。
       •把預設的Jinija2模板引擎替換成其他模板引擎都是非常容易的。
       •Flask和相應的外掛寫得很好。
       •開發效率非常高,比如使用SQLAlchemy的ORM運算元據庫可以節省開發者書寫大量sql的時間。

我愛Flask的第一個程式:
# 從flask框架中匯入Flask類
from flask import Flask

# 傳入__name__初始化一個Flask範例
app = Flask(__name__)


# 裝飾器,將當前路由對映到指定函數
@app.route('/')
def hello_world():
    return 'Hello World'


if __name__ == '__main__':
    app.run()

       •輸出結果:

 * Serving Flask app "first" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

       •1. 此時只需點選圖中藍色網址即可看到輸出‘Hello World’
       •2. 也可在在瀏覽器中開啟http://127.0.0.1:5000/
在這裡插入圖片描述
       •當再次返回pycharm時,可以在開啟的服務狀態列下看到請求的記錄,如:

127.0.0.1 - - [13/Oct/2020 19:19:45] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [13/Oct/2020 19:19:45] "GET /favicon.ico HTTP/1.1" 404 -

       •注意說明
              •@app.route(’/’) :裝飾器對映URL和執行的函數。這個設定將URL對映到指定的函數上,例中指定當前路由為根目錄,如果為根目錄時也可以不寫 /,但是儘量寫上以示區別。
              •app.run():是讓flask專案執行起來,可以指定主機號和埠號。
預設的host是127.0.0.1,port為5000,host=0.0.0.0可以讓其他電腦也能存取到該網站,port可以指定存取的埠。

有問題可以在評論指正,歡迎討論,謝謝大家!!