1. 程式人生 > >Flask入門(二)

Flask入門(二)

通過上篇初步瞭解python的三大框架之一Flask。

補充:

列出pip已經安裝好的模組:

pip freeze

Flask框架下常用的擴充套件包:

Flask-SQLalchemy:操作資料庫;

Flask-script:插入指令碼;

Flask-migrate:管理遷移資料庫;

Flask-Session:Session儲存方式指定;

Flask-WTF:表單;

Flask-Mail:郵件;

Flask-Bable:提供國際化和本地化支援,翻譯;

Flask-Login:認證使用者狀態;

Flask-OpenID:認證;

Flask-RESTful:開發REST API的工具;

Flask-Bootstrap:整合前端Twitter Bootstrap框架;

Flask-Moment:本地化日期和時間;

Flask-Admin:簡單而可擴充套件的管理介面的框架

程式碼如下:


# -*- encoding: utf-8 -*-
#導包
#導包 匯入重定向模組
#url_for是簡易定址跳轉
from flask import Flask
#建立flask物件
from flask import redirect,url_for,jsonify


#使用flask路由器,制定網址和控制器
app = Flask(__name__)

#方法1
@app.route('/')
def index():
return "指定的網址裡想輸出的內容"

#方法2
#給網址增加引數功能使用<變數名>,路由方法要和路由定義的引數同步
#方法一中我們還可以加入引數 加入引數時用'<>'
#注意:①是"/"分割 不是","
    #②我們加入幾個引數,就要傳進幾個引數 用","相隔
@app.route('/hello/<id>/<name>')
def hello(id,name):
return "傳入的第一個引數是%s,第二個引數是%s"%(id,name)


#使用重定向模組來進行跳轉,在重定向跳轉首先要匯入一個包:redirect
#在這裡你傳的什麼 在你網址的末尾就加入什麼
@app.route("/1") 
def reule():
#注意:書寫的格式,後邊的"/"不能丟
return redirect('http://127.0.0.1:5000/')

#使用url_for方法來實現簡易的站內跳轉,引數指定路由方法名稱
@app.route('/2')
def reurl_in():
#return 返回 url_for後邊是方法名 不是網址
return redirect(url_for('index'))


#使用jsonify模組讓網頁直接顯示json資料
@app.route('/json')
def re_json():
#定義好資料格式
json_dict={'id':10,'title':'flask的應用','content':'flask的json格式'}
#使用jsonify來將定義好的資料轉換成json格式,並返回給前端
#return 返回的是二進位制碼,需要解碼
return jsonify(json_dict)
複製程式碼

下面來說說兩個前置訪問和兩個後置訪問:

在第一次請求之前呼叫的方法
#前置訪問①
#這裡的第一次是指啟動服務後的第一次訪問 以後不會重複 除非重啟服務 可以重新整理幾次和重啟服務試試
@app.before_first_request
def before_first_request():
print('這是第一次請求之前呼叫')

#前置訪問②
#在每一次請求之前呼叫
#每請求一次就呼叫顯示一次 你可以多重新整理幾次試一試
@app.before_request
def before_request():
print('每一次呼叫這個方法')

下面這是兩個後置訪問,特殊的是它們帶引數

#後置訪問①
#在請求之後呼叫的發方法,呼叫之後必須傳響應引數,然後將響應內容返回
@app.after_request
def after_request(response):
print('在請求之後,呼叫這個方法')
return response
#這裡一定要記住返回引數

#後置訪問②
#在請求之後,呼叫伺服器出現的錯誤資訊
#在發生錯誤 意外情況 的時候丟擲錯誤 方便查詢
@app.teardown_request
def teardown_request(e):
print('伺服器出現的錯誤是%s'% str(e))
#這裡你要把丟擲的錯誤轉換成字串顯示出來
# 使用程式入口將flask應用啟動,port引數
if __name__ == "__main__":
app.run(debug=True,port=5000)
#這裡指定進入debug模式,預設為False 這裡設定為True
#poot=5000 為防止埠重複 我們可以設定沒有用過的埠來搭建自己的服務,debug=True這樣在隨意修改網頁資訊時就不用重新啟動服務了

一句自己喜歡的話和大家分享:
上人生的旅途罷。前途很遠,也很暗。然而不要怕。不怕的人的面前才有路。