欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python flask安裝和命令詳解

 更新時(shí)間:2019年04月02日 16:12:07   作者:舉幾個(gè)栗子  
Flask是使用Python編寫的Web微框架,這篇文章主要介紹了python flask安裝和命令,需要的朋友可以參考下

Flask Web開發(fā)實(shí)戰(zhàn)學(xué)習(xí)筆記

Flask簡介

Flask是使用Python編寫的Web微框架。Web框架可以讓我們不用關(guān) 心底層的請求響應(yīng)處理,更方便高效地編寫Web程序。因?yàn)镕lask核心簡 單且易于擴(kuò)展,所以被稱作微框架(micro framework)。Flask有兩個(gè)主 要依賴,一個(gè)是WSGI(Web Server Gateway Interface,Web服務(wù)器網(wǎng)關(guān) 接口)工具集——Werkzeug(http://werkzeug.pocoo.org/),另一個(gè)是 Jinja2模板引擎(http://jinja.pocoo.org/)。Flask只保留了Web開發(fā)的核心 功能,其他的功能都由外部擴(kuò)展來實(shí)現(xiàn),比如數(shù)據(jù)庫集成、表單認(rèn)證、 文件上傳等。如果沒有合適的擴(kuò)展,你甚至可以自己動(dòng)手開發(fā)。Flask不 會(huì)替你做決定,也不會(huì)限制你的選擇??傊現(xiàn)lask可以變成任何你想要 的東西,一切都由你做主。

git管理代碼

$ git clone https://github.com/greyli/helloflask.git
$ cd helloflask

1.1搭建開發(fā)環(huán)境

1.1.1 Pipenv工作流

PyPI(https://pypi.org)是一個(gè)Python包的在線倉庫,截至2018年5 月,共有13萬多個(gè)包存儲在這里。后面我們會(huì)學(xué)習(xí)如何編寫自己的Flask 擴(kuò)展,并把它上傳到PyPI上。到時(shí)你就可以使用上面這條命令安裝自己 編寫的包。

現(xiàn)在使用pip安裝Pipenv:

$ pip install pipenv

在Linux或macOS系統(tǒng)中使用sudo以全局安裝:

$ sudo pip install pipenv

可以使用下面的命令檢查Pipenv是否已經(jīng)安裝:

$ pipenv --version

1.創(chuàng)建虛擬環(huán)境

$ pipenv install

Creating a virtualenv for this project…

...

Virtualenv location: /path/to/virtualenv/helloflask-5Pa0ZfZw

 ...

附注:

默認(rèn)情況下,Pipenv會(huì)統(tǒng)一管理所有虛擬環(huán)境。在Windows系統(tǒng) 中,虛擬環(huán)境文件夾會(huì)在C:\Users\Administrator\.virtualenvs\目錄下創(chuàng) 建,而Linux或macOS會(huì)在~/.local/share/virtualenvs/目錄下創(chuàng)建。如果你 想在項(xiàng)目目錄內(nèi)創(chuàng)建虛擬環(huán)境文件夾,可以設(shè)置環(huán)境變量 PIPENV_VENV_IN_PROJECT,這時(shí)名為.venv的虛擬環(huán)境文件夾將在 項(xiàng)目根目錄被創(chuàng)建。

虛擬環(huán)境文件夾的目錄名稱的形式為“當(dāng)前項(xiàng)目目錄名+一串隨機(jī)字 符”,比如helloflask-5Pa0ZfZw。

在單獨(dú)使用Virtualenv時(shí),我們通常會(huì)顯式地激活虛擬環(huán)境。在 Pipenv中,可以使用pipenv shell命令顯式地激活虛擬環(huán)境:

$ pipenv shell

Loading .env environment variables…

Launching subshell in virtual environment. Type 'exit' to return.

提示:

當(dāng)執(zhí)行pipenv shell或pipenv run命令時(shí),Pipenv會(huì)自動(dòng)從項(xiàng)目目錄下 的.env文件中加載環(huán)境變量。 Pipenv會(huì)啟動(dòng)一個(gè)激活虛擬環(huán)境的子shell,現(xiàn)在你會(huì)發(fā)現(xiàn)命令行提 示符前添加了虛擬環(huán)境名“(虛擬環(huán)境名稱)$”,比如:

(helloflask-5Pa0ZfZw) $

這說明我們已經(jīng)成功激活了虛擬環(huán)境,現(xiàn)在你的所有命令都會(huì)在虛 擬環(huán)境中執(zhí)行。當(dāng)你需要退出虛擬環(huán)境時(shí),使用exit命令。

除了顯式地激活虛擬環(huán)境,Pipenv還提供了一個(gè)pipenv run命令,這 個(gè)命令允許你不顯式激活虛擬環(huán)境即可在當(dāng)前項(xiàng)目的虛擬環(huán)境中執(zhí)行命 令,比如:

$ pipenv run python hello.py

這會(huì)使用虛擬環(huán)境中的Python解釋器,而不是全局的Python解釋器

2.管理依賴

在創(chuàng)建虛擬環(huán)境時(shí),如果項(xiàng)目根目錄下沒有Pipfile文件,pipenv install命令還會(huì)在項(xiàng)目文件夾根目錄下創(chuàng)建Pipfile和Pipfile.lock文件,前 者用來記錄項(xiàng)目依賴包列表,而后者記錄了固定版本的詳細(xì)依賴包列 表。當(dāng)我們使用Pipenv安裝/刪除/更新依賴包時(shí),Pipfile以及Pipfile.lock 會(huì)自動(dòng)更新。

1.1.2 安裝Flask

$ pipenv install flask

Installing flask...

 ... Successfully installed Jinja2-2.10 MarkupSafe-1.0 Werkzeug-0.14.1 click-6.7

本文章使用了最新版本的Flask(1.0.2),如果你還在使用舊版本,請 使用下面的命令進(jìn)行更新:

$ pipenv update flask

1.2  hello flask

使 用下面的命令切換到該目錄:

$ cd demos/hello

在hello目錄下的app.py腳本中包含一個(gè)最小的Flask程序,如代碼清 單1-1所示。 代碼清單1-1 hello/app.py:最小的Flask程序

from flask import Flask app = Flask(__name__)
@app.route('/') def index():  return '<h1>Hello Flask!</h1>'

1.2.1 創(chuàng)建程序?qū)嵗?/strong>


我們安裝Flask時(shí),它會(huì)在Python解釋器中創(chuàng)建一個(gè)flask包,我們可 以通過flask包的構(gòu)造文件導(dǎo)入所有開放的類和函數(shù)。我們先從flask包導(dǎo) 入Flask類,這個(gè)類表示一個(gè)Flask程序。實(shí)例化這個(gè)類,就得到我們的

程序?qū)嵗齛pp:

from flask import Flask
app = Flask(__name__)

傳入Flask類構(gòu)造方法的第一個(gè)參數(shù)是模塊或包的名稱,我們應(yīng)該使 用特殊變量__name__。Python會(huì)根據(jù)所處的模塊來賦予__name__變量相 應(yīng)的值,對于我們的程序來說(app.py),這個(gè)值為app。除此之外,這 也會(huì)幫助Flask在相應(yīng)的文件夾里找到需要的資源,比如模板和靜態(tài)文 件。

提示

Flask類是Flask的核心類,它提供了很多與程序相關(guān)的屬性和方 法。在后面,我們經(jīng)常會(huì)直接在程序?qū)嵗齛pp上調(diào)用這些屬性和方法來 實(shí)現(xiàn)相關(guān)功能。在第一次提及Flask類中的某個(gè)方法或?qū)傩詴r(shí),我們會(huì)直 接以實(shí)例方法/屬性的形式寫出,比如存儲程序名稱的屬性為app.name。

1.2.2 注冊路由

在一個(gè)Web應(yīng)用里,客戶端和服務(wù)器上的Flask程序的交互可以簡單 概括為以下幾步:

1)用戶在瀏覽器輸入U(xiǎn)RL訪問某個(gè)資源。

2)Flask接收用戶請求并分析請求的URL。

3)為這個(gè)URL找到對應(yīng)的處理函數(shù)。

4)執(zhí)行函數(shù)并生成響應(yīng),返回給瀏覽器。

 5)瀏覽器接收并解析響應(yīng),將信息顯示在頁面中。

 在上面這些步驟中,大部分都由Flask完成,我們要做的只是建立處 理請求的函數(shù),并為其定義對應(yīng)的URL規(guī)則。只需為函數(shù)附加 app.route()裝飾器,并傳入U(xiǎn)RL規(guī)則作為參數(shù),我們就可以讓URL與函數(shù)建立關(guān)聯(lián)。這個(gè)過程我們稱為注冊路由(route),路由負(fù)責(zé)管理 URL和函數(shù)之間的映射,而這個(gè)函數(shù)則被稱為視圖函數(shù)(view function)。

操作:

在這個(gè)程序里,app.route()裝飾器把根地址/和index()函數(shù)綁 定起來,當(dāng)用戶訪問這個(gè)URL時(shí)就會(huì)觸發(fā)index()函數(shù)。這個(gè)視圖函 數(shù)可以像其他普通函數(shù)一樣執(zhí)行任意操作,比如從數(shù)據(jù)庫中獲取信息, 獲取請求信息,對用戶輸入的數(shù)據(jù)進(jìn)行計(jì)算和處理等。最后,視圖函數(shù) 返回的值將作為響應(yīng)的主體,一般來說,響應(yīng)的主體就是呈現(xiàn)在瀏覽器 窗口的HTML頁面。在最小程序中,視圖函數(shù)index()返回一行問候:

@app.route('/') def index(): return '<h1>Hello, World!</h1>'

雖然這個(gè)程序相當(dāng)簡單,但它卻是大部分Flask程序的基本模式。在 復(fù)雜的程序中,我們會(huì)有許多個(gè)視圖函數(shù)分別處理不同URL的請求,在 視圖函數(shù)中會(huì)完成更多的工作,并且返回包含各種鏈接、表單、圖片的 HTML文件,而不僅僅是一行字符串。返回的頁面中的鏈接又會(huì)指向其 他URL,被單擊后觸發(fā)對應(yīng)的視圖函數(shù),獲得不同的返回值,從而顯示 不同的頁面,這就是我們?yōu)g覽網(wǎng)頁時(shí)的體驗(yàn)。

提示

route()裝飾器的第一個(gè)參數(shù)是URL規(guī)則,用字符串表示,必須以 斜杠(/)開始。這里的URL是相對URL(又稱為內(nèi)部URL),即不包 含域名的URL。以域名www.helloflask.com為例,“/”對應(yīng)的是根地址 (即www.helloflask.com),如果把URL規(guī)則改為“/hello”,則實(shí)際的絕 對地址(外部地址)是www.helloflask.com/hello。 假如這個(gè)程序部署在域名為www.helloflask.com的服務(wù)器上,當(dāng)啟 動(dòng)服務(wù)器后,只要你在瀏覽器里訪問www.helloflask.com,就會(huì)看到瀏覽器上顯示一行“Hello,F(xiàn)lask!”問候。

1.為視圖綁定多個(gè)URL

@app.route('/hi')
@app.route('/hello')
def say_hello():
 return '<h1>Hello, Flask!</h1>'

2.動(dòng)態(tài)URL

@app.route('/greet/<name>')
def greet(name):
 return '<h1>Hello, %s!</h1>' % name

附注:

當(dāng)URL規(guī)則中包含變量時(shí),如果用戶訪問的URL中沒有添加變量, 比如/greet,那么Flask在匹配失敗后會(huì)返回一個(gè)404錯(cuò)誤響應(yīng)。一個(gè)很常 見的行為是在app.route()裝飾器里使用defaults參數(shù)設(shè)置URL變量的默 認(rèn)值,這個(gè)參數(shù)接收字典作為輸入,存儲URL變量和默認(rèn)值的映射。在 下面的代碼中,我們?yōu)間reet視圖新添加了一個(gè)app.route()裝飾器, 為/greet設(shè)置了默認(rèn)的name值:

@app.route('/greet', defaults={'name': 'Programmer'})
@app.route('/greet/<name>')
def greet(name): 
return '<h1>Hello, %s!</h1>' % name

這時(shí)如果用戶訪問/greet,那么變量name會(huì)使用默認(rèn)值 Programmer,視圖函數(shù)返回<h1>Hello,Programmer!</h1>。上面的用 法實(shí)際效果等同于:

@app.route('/greet')
@app.route('/greet/<name>')
def greet(name='Programmer'): 
 return '<h1>Hello, %s!</h1>' % name

1.3 啟動(dòng)開發(fā)服務(wù)器

$ flask run

* Environment: production

WARNING: Do not use the development server in a production environment. Use a production WSGI server instead.

* Debug mode: off

* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

注意:

如果報(bào)這個(gè)錯(cuò)誤!

Error: Could not locate a Flask application. You did not provide the "FLASK_APP" environment variable, and a "wsgi.py" or "app.py" module was not found in the current directory.

那就是路徑?jīng)]有切到flask 的app.py目錄下!

總結(jié)

以上所述是小編給大家介紹的python flask安裝和命令詳解,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!

相關(guān)文章

最新評論