1. 程式人生 > >Python開發-flask框架學習

Python開發-flask框架學習

最近閒來無事,幫別人一起看看python3與flask,據說他想搞個登入註冊的小demo,然後就給看了下,順便簡單的跟他說明了下。本文只是記錄我在給別人講解怎麼使用python3與flask還有mongdb的過程,由於時間緊張所以沒有對其進行深入的原理等說明,其實也說明不了什麼,畢竟我技術說實在的不是很好

python3.6

首先這邊選擇的是python3.6,雖然python3在網上好像名聲不咋地,而且一度有文章說python3正在毀滅Python,但是反正是別人選的,也就將就了。這裡就不講解python3的語法了,大家可以參考菜鳥教程

flask

這次的web框架選擇的是flask,別問我為啥,因為不是我選的。使用了flask微框架之後,覺得flask使用起來還是挺方便的,科普下,flask是由python實現的一個web微框架,而且有對應的python3及python2版本。

mongodb

這裡資料庫選擇的是mongodb,我選擇的python擴充套件是pymongo。對於mongodb還是停留在幾年前我做畢業設計的時候,當時正颳起了一股nosql的風,然後老師幫我選擇了mongodb這一款介於兩者之間的分散式文件資料庫,當初年少無知對這一塊也沒多瞭解就是學會了使用,現在倒好,還能使用上了。

開始

其實本來寫了一段對於python一級flask的描述,但是想想還是刪掉了,為什麼呢,因為這裡我發現我對這兩者的理解不是非常的深,所以不想發表太多的評論或者看法,我覺得至少要等我在使用python與flask寫點什麼有更深入的理解之後才能有一點點資格進行評論或者表達我自己的看法。
我們直接開始說如何使用flask吧。先看一段很簡單的程式碼,也是很經典的Hello World:

from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
    return 'Hello World'
if __name__ == '__main__':
    app.run()

上述程式碼就是使用了flask框架製作的一個最小的應用。使用python執行之後訪問localhost:5000就能看到頁面上顯示Hello World這句話。這裡我想有一點後臺基礎的同學們可能就大概明白我寫的是什麼意思了。
首先我引入了Flask類,然後給這個類建立了一個例項,會python的同學知道我這裡傳入的__name__引數是什麼,這裡代表這個模組的名字,因為這個模組是直接被執行的所以此時__name__的值是__main__,隨後我用route()這個修飾器定義了一個路由,告訴flask如何訪問我的函式,最後使用我們使用run()函式使這個應用在伺服器上執行起來,而if判斷是為了使run函式只有在模組被直接執行時在執行。
如果你按照我說的直接寫了個python檔案可能執行的時候會直接報錯,提示沒有flask的個模組,因為沒有安裝flask,通過

sudo pip3 install flask

就可以在python3中安裝flask這個模組了,而python2的使用者可以直接將pip後頭的3去掉就好了。

路由

ok,通過上述的描述,可能你對使用flask有一個初步的瞭解了,我們該瞭解下flask的組成部分了。首先要說說flask的路由部分了,flask通過route()裝飾器將一個函式繫結到對應的URL上了。最簡單的路由就像下面這幾個:

@app.route('/')
def index():
    return 'Hello World!'
@app.route('/home')
def index():
    return 'This is home page!'

當然跟其他web框架一樣,flask支援在路由上制定引數及引數型別,通過<variable_name>可以標記變數,這個部分將會作為命名引數傳遞到你的函式,也可以通過<converter:variable_name>指定一個可選的裝飾器,參考如下:

@app.route('/user/<username>')
def show_user_profile(username):
    return 'User %s' % username

@app.route('/post/<int:post_id>')
def show_post(post_id):
    return 'Post %d' % post_id

裝飾器有以下幾種:
1. int 只接受整數
2. float 同 int ,但是接受浮點數
3. path 和預設的相似,但也接受斜線

唯一 URL / 重定向行為

Flask的URL規則是基於Werkzeug的路由模組。個模組背後的思想是基於 Apache 以及更早的 HTTP 伺服器主張的先例,保證優雅且唯一的 URL。有興趣的同學可以百度下。我們看兩個例子:

@app.route('/projects/')
def projects():
    return 'The project page'

@app.route('/about')
def about():
    return 'The about page'

這裡有兩個路由,第一個看上去像是資料夾目錄地址一般,而第二個更像訪問檔案,但是在Flask中,訪問第一個路由不帶/時,Flask會自動重定向到正確地址,而訪問第二個路由時末尾帶上/後Flask會直接報404 NOT FOUND錯誤。
這個行為使得在遺忘尾斜線時,允許關聯的 URL 接任工作,與 Apache 和其它的伺服器的行為並無二異。此外,也保證了 URL 的唯一,有助於避免搜尋引擎索引同一個頁面兩次。

構造URL

在Web開發中我們不僅僅只是通過瀏覽器直接請求地址,在函式裡面很多時候也需要跳轉到相應的URL,那麼這時候我們就需要構造我們的URL了,很多人會說可以直接寫URL地址,但是這樣做有一個很不好的點就是如果我這裡URL變動了,換了個名字我是否還需要改多處使用了這個URL的地方呢,Flask中可以通過url_for函式來構造相應的URL。雖然這種方式如果URL關聯的函式名稱換了我們還是要改動多處url_for裡面的函式名,但是我們很多時候變動URL的可能性比變動函式名稱的可能性要大很多。具體程式碼如下:

from flask import Flask, url_for
app = Flask(__name__)
@app.route('/')
def index(): pass
@app.route('/login')
def login(): pass
@app.route('/user/<username>')
def profile(username): pass
@app.route('/test') 
def test():
    print url_for('index')
    print url_for('login')
    print url_for('login', next='/')
    print url_for('profile', username='John Doe')
#/
#/login
#/login?next=/
#/user/John%20Doe

通過url_for函式還有兩個好處就是能對特殊字元和Unicode資料進行轉義以及對應應用不位於URL根路徑(例如,在 /demo 下,而不是 /),url_for函式會幫你處理好這個情況。
未完待續。。。。

相關推薦

Python開發-flask框架學習

最近閒來無事,幫別人一起看看python3與flask,據說他想搞個登入註冊的小demo,然後就給看了下,順便簡單的跟他說明了下。本文只是記錄我在給別人講解怎麼使用python3與flask還有mongdb的過程,由於時間緊張所以沒有對其進行深入的原理等說明,其

python web開發flask框架學習(2) 加載模版

模版文件 簡書 nbsp 什麽 blog python 目錄 pan col 上次學習了flask的helloword項目的創建,這次來學習flask項目的模版加載: 第一步:創建一個flask項目 第二步:在項目目錄的templates文件夾下創建一個html文件

python flask框架學習

1.首先在window環境下安裝flask庫(前提已經裝了python3.6) pip install flask 2.在cmd視窗下進入python from flask import Flask 沒有錯誤表示成功安裝 3.flask初識 from flask impo

經典的python-flask框架學習

最近在重溫python的時候,發現一個有趣的web框架~flask,被其深深的著迷。也基於flask+mysql做了一些應用,特此也想寫一些文字來記錄學習的過程,幫助測試人員,非專業的產品經理了解網站搭建過程,後期能怒懟高大上的開發哥哥們。同時也是對自己學習過程的動力吧從硬體

PythonFlask框架使用Redis做數據緩存的配置方法

num pre 設置 span run type con sudo python flask配置redis 首先得下載flask的緩存插件Flask-Cache,使用pip下載。 sudo pip install flask_cache 為應用擴展flask_ca

三十、pythonFlask框架(二)檢視:返回狀態碼、重定向、狀態保持、請求鉤子

一、返回狀態碼和abort函式 1.return直接返回狀態碼: return可以返回自定義的不符合http協議的狀態碼。 作用:實現前後端的資料互動。 程式碼: from flask import Flask app = Flask(__name__) @app.rou

pythonflask框架的入門實例程序 NameError: __name__is not defined!

spa 知識 框架 ret error: 學習 error 劃線 err 剛剛接觸Python,了解了一些基礎知識便開始學習了Python中的flask框架,沒想一進門就載坑啦! 錯誤提示:NameError: __name__is not defined! 出現這種錯

PythonFlask框架專案拆分

新建flask專案,建Python package包,把static、template拉進去, 新建 settings.py、models.py、init.py、ext.py、views.py, 在預設建立的app.py導包, from flask_script import Man

PythonFlask框架使用

Flask和Django、Bottle號稱Python中的強大又簡單的Web框架。 Flask是一個使用Python編寫的輕量級Web應用框架。基於Werkzeug WSGI工具箱和Jinja2 模板引擎。 Flask使用BSD授權。 Flask也被稱為“microframework”,因為它使用簡單的核心

專門為零基礎學習Python開發準備的學習資料

今天給大家推薦幾本入門書籍和幾個網站,當你學到一定程度後,找工作可以上下面這幾個推薦網站。 看書 1《程式設計師成長的煩惱》 還在猶豫該不該轉行學程式設計?還在程式設計的道路上摸爬滾打?在追尋夢想的道路上你並不孤單,四位“草根”程式設計師也曾有過類似的困惑。 打小

PythonFlask框架應用(三)_Boortstrap與Flask_wtf

#######Flask框架####### ## flask-bootstrap # 如何在flask中使用Bootstrap         要想在程式中整合Bootstrap,顯然要對模板做所有必要的改動。不過,更簡單的方法是使用一個名為Flask-

從原始碼解析PythonFlask框架中request物件的用法

from flask import requestFlask 是一個人氣非常高的Python Web框架,筆者也拿它寫過一些大大小小的專案,Flask 有一個特性我非常的喜歡,就是無論在什麼地方,如果你想要獲取當前的request物件,只要 簡單的: 從當前request

PythonFlask框架SQLALCHEMY_ECHO設定

在用配置類的方式給app設定配置時, SQLALCHEMY_ECHO 這個是記錄列印SQL語句用於除錯的, 一般設定為False, 不然會在控制檯輸出一大堆的東西    /home/python/.virtualenvs/py3_flask/bin/python /home/

flask框架學習筆記——SQLAlchemy外來鍵約束

from flask import Flask import config from flask_sqlalchemy import SQLAlchemy app = Flask (name) app.config.from_object(config) db=SQLAlchemy(ap

PythonWeb開發Django框架學習(十一)使用框架自帶Admin管理資料庫資料

上次說到了有關於Model類對於資料庫的資料的增刪改查操作還有一對多,多對多關係的對映操作等等。 這次呢來說一個django管理資料庫的網頁版幫手Admin管理,在我看來,這個和PHP的wamp整合開

使用PythonFlask框架實現視訊的流媒體傳輸

Flask 是一個 Python 實現的 Web 開發微框架。這篇文章是一個講述如何用它實現傳送視訊資料流的詳細教程。我敢肯定,現在你已經知道我在O'Reilly Media上釋出了有關Flask的一本書和一些視訊資料。在這些上面,Flask框架介紹的覆蓋面是相當完整的,出於某種原因,也有一小部分的功能沒有太

Flask 框架學習(一)

Flask 框架學習 現在網上的flask框架的學習資料有點少,到處扒拉扒拉之後乾脆寫個部落格免得以後自己忘記了,同時也分享一下我的學習心得,直接進入正題吧,至於具體的安裝之類的就不多說了,直接進入正題, 1、簡單例子 以一個簡單的flask為例,可以

pythonflask框架的使用的詳細步驟

2018.05.16********************************************************** author: wills 閱讀以下內容預設掌握的知識:: 1. python基礎 2. 會使用pip

PythonFlask 框架安裝應用

Flask是一個使用 Python 編寫的輕量級 Web 應用框架。其 WSGI 工具箱採用 Werkzeug ,模板引擎則使用 Jinja2 ,使用 BSD 授權。Flask也被稱為 “microframework” ,因為它使用簡單的核心,用 extension 增加其他

Pythonflask框架

remove 詳細 ons 就是 eve 直接 對象 nds exe Flask是一個Python編寫的Web 微框架,讓我們可以使用Python語言快速實現一個網站或Web服務。本文參考自Flask官方文檔,大部分代碼引用自官方文檔。 安裝flask