Python安裝Flask環(huán)境及簡(jiǎn)單應(yīng)用示例
本文實(shí)例講述了Python安裝Flask環(huán)境及簡(jiǎn)單應(yīng)用。分享給大家供大家參考,具體如下:
安裝環(huán)境
使用虛擬環(huán)境安裝Flask,可以避免包的混亂和版本的沖突,虛擬環(huán)境是Python解釋器的副本,在虛擬環(huán)境中你可以安裝擴(kuò)展包,為每個(gè)程序單獨(dú)創(chuàng)建的虛擬環(huán)境,可以保證程序只能訪問虛擬環(huán)境中的包。而不會(huì)影響系統(tǒng)中安裝的全局Python解釋器,從而保證全局解釋器的整潔。
虛擬環(huán)境使用virtualenv創(chuàng)建,可以查看系統(tǒng)是否安裝了virtualenv:
$ virtualenv --version
安裝虛擬環(huán)境(須在聯(lián)網(wǎng)狀態(tài)下)
$ sudo pip install virtualenv $ sudo pip install virtualenvwrapper
創(chuàng)建虛擬環(huán)境(ubuntu里須在聯(lián)網(wǎng)狀態(tài)下)
$ mkvirtualenv Flask_py
進(jìn)入虛擬環(huán)境
$ workon Flask_py
退出虛擬環(huán)境
如果所在環(huán)境為真實(shí)環(huán)境,會(huì)提示deactivate:未找到命令
$ deactivate Flask_py
安裝Flask
指定Flask版本安裝
$ pip install flask==0.10.1
Mac系統(tǒng):
$ easy_install flask==0.10.1
在ipython中測(cè)試安裝是否成功
$ from flask import Flask
Flask程序運(yùn)行過程:
所有Flask程序必須有一個(gè)程序?qū)嵗?/p>
Flask調(diào)用視圖函數(shù)后,會(huì)將視圖函數(shù)的返回值作為響應(yīng)的內(nèi)容,返回給客戶端。一般情況下,響應(yīng)內(nèi)容主要是字符串和狀態(tài)碼。
當(dāng)客戶端想要獲取資源時(shí),一般會(huì)通過瀏覽器發(fā)起HTTP請(qǐng)求。此時(shí),Web服務(wù)器使用WSGI(Web Server Gateway Interface)協(xié)議,把來自客戶端的所有請(qǐng)求都交給Flask程序?qū)嵗?,程序?qū)嵗褂肳erkzeug來做路由分發(fā)(URL請(qǐng)求和視圖函數(shù)之間的對(duì)應(yīng)關(guān)系)。根據(jù)每個(gè)URL請(qǐng)求,找到具體的視圖函數(shù)。 在Flask程序中,路由的實(shí)現(xiàn)一般是通過程序?qū)嵗难b飾器實(shí)現(xiàn)。通過調(diào)用視圖函數(shù),獲取到數(shù)據(jù)后,把數(shù)據(jù)傳入HTML模板文件中,模板引擎負(fù)責(zé)渲染HTTP響應(yīng)數(shù)據(jù),然后由Flask返回響應(yīng)數(shù)據(jù)給瀏覽器,最后瀏覽器處理返回的結(jié)果顯示給客戶端。
示例:
# 導(dǎo)入Flask類
from flask import Flask
#Flask函數(shù)接收一個(gè)參數(shù)__name__,它會(huì)指向程序所在的模塊
app = Flask(__name__)
# 裝飾器的作用是將路由映射到視圖函數(shù)index
@app.route('/')
def index():
return 'Hello World'
# Flask應(yīng)用程序?qū)嵗膔un方法啟動(dòng)WEB服務(wù)器
if __name__ == '__main__':
app.run()
給路由傳參示例:
有時(shí)我們需要將同一類URL映射到同一個(gè)視圖函數(shù)處理,比如:使用同一個(gè)視圖函數(shù) 來顯示不同用戶的個(gè)人信息。
# 路由傳遞的參數(shù)默認(rèn)當(dāng)做string處理,這里指定int,尖括號(hào)中的內(nèi)容是動(dòng)態(tài)的
@app.route('/user/<int:id>')
def hello_itcast(id):
return 'hello itcast %d' %id
返回狀態(tài)碼示例:
return后面可以自主定義狀態(tài)碼(即使這個(gè)狀態(tài)碼不存在)。當(dāng)客戶端的請(qǐng)求已經(jīng)處理完成,由視圖函數(shù)決定返回給客戶端一個(gè)狀態(tài)碼,告知客戶端這次請(qǐng)求的處理結(jié)果。
@app.route('/')
def hello_itcast():
return 'hello itcast',999
abort函數(shù):
如果在視圖函數(shù)執(zhí)行過程中,出現(xiàn)了異常錯(cuò)誤,我們可以使用abort函數(shù)立即終止視圖函數(shù)的執(zhí)行。通過abort函數(shù),可以向前端返回一個(gè)http標(biāo)準(zhǔn)中存在的錯(cuò)誤狀態(tài)碼,表示出現(xiàn)的錯(cuò)誤信息。
使用abort拋出一個(gè)http標(biāo)準(zhǔn)中不存在的自定義的狀態(tài)碼,沒有實(shí)際意義。如果abort函數(shù)被觸發(fā),其后面的語句將不會(huì)執(zhí)行。其類似于python中raise。
from flask import Flask,abort
@app.route('/')
def hello_itcast():
abort(404)
return 'hello itcast',999
重定向redirect示例
from flask import redirect
@app.route('/')
def hello_itcast():
return redirect('http://www.baidu.com')
正則URL示例:
from flask import Flask
from werkzeug.routing import BaseConverter
class Regex_url(BaseConverter):
def __init__(self,url_map,*args):
super(Regex_url,self).__init__(url_map)
self.regex = args[0]
app = Flask(__name__)
app.url_map.converters['re'] = Regex_url
@app.route('/user/<re("[a-z]{3}"):id>')
def hello_itcast(id):
return 'hello %s' %id
設(shè)置cookie和獲取cookie
from flask import Flask,make_response
@app.route('/cookie')
def set_cookie():
resp = make_response('this is to set cookie')
resp.set_cookie('username', 'itcast')
return resp
from flask import Flask,request
#獲取cookie
@app.route('/request')
def resp_cookie():
resp = request.cookies.get('username')
return resp
希望本文所述對(duì)大家基于flask框架的Python程序設(shè)計(jì)有所幫助。
- Flask之pipenv虛擬環(huán)境的實(shí)現(xiàn)
- Flask框架的學(xué)習(xí)指南之開發(fā)環(huán)境搭建
- Windows上使用virtualenv搭建Python+Flask開發(fā)環(huán)境
- Python2.7環(huán)境Flask框架安裝簡(jiǎn)明教程【已測(cè)試】
- 深度定制Python的Flask框架開發(fā)環(huán)境的一些技巧總結(jié)
- 在阿里云服務(wù)器上配置CentOS+Nginx+Python+Flask環(huán)境
- 在CentOS上配置Nginx+Gunicorn+Python+Flask環(huán)境的教程
- Flask框架搭建虛擬環(huán)境的步驟分析
相關(guān)文章
Python中subprocess的簡(jiǎn)單使用示例
這篇文章主要介紹了Python中subprocess的簡(jiǎn)單使用示例,是Python進(jìn)程方面處理的相關(guān)重要知識(shí),需要的朋友可以參考下2015-07-07
python修改pip install默認(rèn)安裝路徑的詳細(xì)步驟
pip安裝的第三方庫默認(rèn)存放在C盤中,為了便于管理和不過度占用C盤空間所以想修改默認(rèn)的pip路徑,文章通過圖文結(jié)合的方式給大家介紹的非常詳細(xì),需要的朋友可以參考下2025-04-04
python設(shè)置 matplotlib 正確顯示中文的四種方式
這篇文章主要介紹了python設(shè)置 matplotlib 正確顯示中文的四種方式,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-05-05
Python Web框架Django的模型和數(shù)據(jù)庫遷移詳解
Django 是一個(gè)極其強(qiáng)大的 Python Web 框架,它提供了許多工具和特性,能夠幫助我們更快速、更便捷地構(gòu)建 Web 應(yīng)用,在本文中,我們將會(huì)關(guān)注 Django 中的模型(Models)和數(shù)據(jù)庫遷移(Database Migrations)這兩個(gè)核心概念,需要的朋友可以參考下2023-08-08
Python教程pandas數(shù)據(jù)分析去重復(fù)值
Pandas指定行進(jìn)行去重更新值,加載數(shù)據(jù)sample抽樣函數(shù),指定需要更新的值append直接添加append函數(shù)用法,根據(jù)某一列key值進(jìn)行去重key唯一2021-09-09
Python之PyQt6對(duì)話框的實(shí)現(xiàn)
這篇文章主要介紹了Python之PyQt6對(duì)話框的實(shí)現(xiàn),文章內(nèi)容詳細(xì),簡(jiǎn)單易懂,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2023-01-01
numpy 實(shí)現(xiàn)返回指定行的指定元素的位置索引
這篇文章主要介紹了numpy 實(shí)現(xiàn)返回指定行的指定元素的位置索引操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-05-05

