1. 程式人生 > >初涉FlaskWeb開發----基礎篇

初涉FlaskWeb開發----基礎篇

如果 不同的 實現 txt 元組 alert option 三個參數 font

1.web程序運行的基本流程

  {客戶端發送請求 <-----> 服務器返回響應}

技術分享圖片

2.使用框架可以降低開發難度,提高開發效率。

3.Flask框架的基本認識:

  特點:用Python語言實現的輕量、簡潔、擴展性強

   核心:werkzeug 和 Jinja2

4.虛擬環境:

  創建虛擬環境:mkvirtualenv -p python3 名稱

   進入虛擬環境:workon

   退出虛擬環境:deactivate

   移除虛擬環境:rmvirtualenv 名稱

5.依賴包:

  生成依賴包:pip freeze > requirements.txt

   安裝依賴包:pip install -r requirements.txt

6.基本程序:

  創建程序實例:__name__參數為字符串,表示模塊名,可以確定程序所在位置,如果傳入標準模塊名,會影響靜態路徑的訪問,不會影響視圖函數的訪問。

  定義裝飾器路由:通過程序實例調用route函數實現,底層是通過add_url_rule()函數實現,第一個參數rule、第二個參數endpoint(視圖函數名的字符串形式),第三個參數視圖函數名。

  啟動服務器:run方法可以啟動服務器,可以指定調試debug,便於調試代碼信息,自動跟蹤代碼的變化

 1 # 導入Flask
 2 from flask import Flask
 3 
 4 # 創建Flask類的對象
 5
# 結論:__name__參數的作用:確認程序實例文件所在的位置。 6 # 1、必須要傳入參數 7 # 2、參數類型必須是字符串 8 # 3、如果傳入標準模塊名,只會影響靜態路徑的訪問,不會影響視圖函數的訪問。 9 app = Flask(__name__) 10 11 12 # 定義路由url地址 13 # endpoint:表示視圖函數名的字符串形式。 14 # 不使用裝飾器也可以實現路由映射。 15 16 @app.route(/Lee,methods=[POST,GET]) 17 def hello2018(): 18 # return 可以返回狀態碼,也可以返回不符合http協議的狀態碼,用來實現前後端的數據交互
19 """ 20 前端發送ajax: 21 $.ajax({ 22 url:‘/Lee‘, 23 data:。。。, 發送到後端的數據 24 contentType:‘‘, 發送到後端的數據類型 25 dataType:‘json‘ 後端返回的數據類型 26 success:function(resp){ 27 if (resp == ‘888‘){ 28 alert(errmsg) 29 }else{ 30 31 } 32 33 34 } 35 }) 36 37 errno=888,errmsg=‘用戶名已註冊‘ 38 39 40 :return: 41 """ 42 return hello world2018,888 43 # self.add_url_rule(rule, endpoint, f, **options) 44 # 通過程序實例調用添加url規則,也可以實現路由映射。 45 # app.add_url_rule(‘/123‘,‘hello2018‘,hello2018) 46 47 # 結論: 48 # 1、視圖函數不能重名。 49 # 2、url可以重復,不同的http請求方法,是對應不同的操作get查詢post插入put修改delete刪除 50 # @app.route(‘/‘) 51 # def hello2019(): 52 # a = 1 53 # b = 2 54 # return a,b 55 # 不能返回字典 56 # my_dict = {‘a‘:‘123‘} 57 # return my_dict 58 # 不能返回列表 59 # my_list = [1,2,3] 60 # return my_list 61 # 可以返回元組 62 # return ‘hello world‘ 63 64 65 # 啟動服務器 66 # __name__表示當前模塊名,如果被導入文件的時候__name__表示文件名 67 if __name__ == __main__: 68 # 查看路由映射:具體的url地址和視圖函數名的指向關系。 69 print(app.url_map) 70 # debug調試模式:幫助定位錯誤信息,自動跟蹤代碼的變化 71 app.run(debug=True)

7.基本程序擴展:

  視圖函數不能重名

  URL可以重復,因為不同的http請求方法代表不同的操作

  路徑的訪問順序是從上到下依次查找,如果找到不會繼續往下查找

8.加載配置信息:

  加載配置對象

  加載配置文件ini格式文件

  加載環境變量

 1 from flask import Flask
 2 # 導入配置類
 3 # from config import Config
 4 from config import config_dict
 5 app = Flask(__name__)
 6 # 加載配置文件:三種實現形式
 7 # 1、加載配置對象,config是flask內置的配置對象
 8 # 重點掌握:因為擴展性更強
 9 # app.config.from_object(Config)
10 # app.config.from_object(config_dict[‘pro‘])
11 # 2、加載配置文件
12 # app.config.from_pyfile(‘config.ini‘)
13 # 3、加載環境變量
14 # app.config.from_envvar(‘SET‘)
15 
16 
17 @app.route(/)
18 def index():
19     return hello world
20 
21 if __name__ == __main__:
22     app.run()

config.py文件:

# 基本配置類
class Config:
    DEBUG = None


# 開發模式配置
class DevelopmentConfig(Config):
    DEBUG = True


# 生產模式配置
class ProductionConfig(Config):
    DEBUG = False

# 定義字典,實現配置類的映射
config_dict = {
    dev:DevelopmentConfig,
    pro:ProductionConfig
}

9.狀態碼:

  return可以返回不符合http協議的狀態碼,用來前後端的數據交互。

10.重定向:

  redirect----參數是具體的URL地址

  url_for ----參數是視圖函數名(端點endpoint)

# 導入flask內置的函數redirect
from flask import Flask,redirect,url_for

app = Flask(__name__)


# 重定向redirect:接收參數為location,具體的url地址
# 重新發送網絡請求,跳轉頁面
# 當項目路徑(url)或文件發生變化的情況下,可以使用重定向。
@app.route(/)
def index():
    url = http://www.baidu.com
    # 重定向到百度
    return redirect(url)

# url_for反向解析:接收的參數endpoint,視圖函數名
@app.route(/for)
def demo_url_for():
    return redirect(url_for(index))


if __name__ == __main__:
    print(app.url_map)
    app.run(debug=True)

   

初涉FlaskWeb開發----基礎篇