1. 程式人生 > >Flask基礎之一

Flask基礎之一

讀取配置 uuid world! app .exe 什麽 () string pda

hello world
#從flask這個包中導入Flask這個類
#Flask這個類是項目的核心,以後的很多操作都是基於這個類的對象
#註冊url,註冊藍圖都是這個類的對象
from flask import Flask

#創建一個Flask對象,傳遞__name__這個參數進去
#__name__這個參數的作用:
# 1.規定模板和靜態資源的路徑
# 2.以後的一些Flask插件,比如Flask_migrate,Flask_SQLAlchemy報錯的話,哪麽Flask就會通過這個參數找到具體的報錯位置
app = Flask(__name__)

# @app.route()是一個裝飾器,將對應的“/”路徑應用到hello_world()這個函數上面
# 在訪問“/”的時候在頁面上返回Hello World
@app.route(‘/‘)
def hello_world():
    return ‘Hello World!‘

# 如果作為一個主文件運行,哪麽執行app.run()方法,也就是啟動這個網站
if __name__ == ‘__main__‘:
    app.run()**strong text**

debug模式

  • 為什麽要開啟DEBUG模式?

    • 如果開啟了debug模式,name代碼在調試過程中出現了異常,在瀏覽器頁面中可以看到具體的報錯信息,以及具體的錯誤代碼位置,方便開發者調試。
    • 如果flask開啟了debug模式,name以後再python中修改任何代碼,只要在pycharm中使用ctrl+s即可保存重載,不需要手動去重載程序
  • 如何配置debug模式:
  1. app.run()
    app.run(debug=True)
  2. app.debug
    app.debug = True
  3. 配置信息方式(使用參數形式的方式)
    app.config.update[DEBUG=True]
    #其實也就是update了config字典
  4. 通過配置文件的形式
    - 創建一個config.py的配置文件,寫入
    DEBUG = True
    - 然後在你的app.py文件中寫入
    app.config.from_object(config)  #即可讀取配置文件中的DEBUG=True

    debug PIN碼

    D:\MyDevSoftInstallDir\Python3\python3.exe D:/myflask/base/base.py
    * Restarting with stat
    * Debugger is active!
    * Debugger PIN: 177-952-649
    * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

    然後在頁面上調試代碼的時候用到。
    也是為了安全考慮。

    配置文件兩種方式詳解

    • 第一種方式:
      在項目主路徑下創建config.py
      DEBUG=True

      然後在主項目裏面去讀取config.py裏面的配置:

      from flask import Flask
      import config
      app = Flask(__name__)
      app.config.from_object(config)
    • 第二種方式:直接讀取文件的形式,也可以是普通的txt文件形式;這種方式不需要直接import config
      在項目主路徑下創建config.py
      DEBUG=True

      然後在主項目裏面去讀取config.py裏面的配置:

      from flask import Flask
      app = Flask(__name__)
      app.config.from_pyfile(‘config.py‘,silent=True)  #靜默模式加載配置文件(找不到配置文件不報錯),文件的後綴名不可少

      url與視圖函數的映射

    • 傳遞參數:

      傳遞參數的語法是/<參數類型:參數名稱>/,然後在視圖函數中也要定義同名的參數

  • 參數的數據類型
    • string:只接受字符串,沒有任何“/或者\”的文本
    • int:只接受整數
    • float:只接受浮點數,整數都不行哈
    • path:和string類似,但是接受斜杠
    • uuid:只有接受符合uuid的字符赤岸,一般用作表的主鍵
    • any:可以指定多種路徑

接收用戶傳遞參數的方式:

  • 使用path的方式(將參數嵌入到路徑中)
  • 使用查詢字符串的形式 (也就是通過?key=value的形式傳遞的,只能通過request.args.get的方式來獲取)

如果頁面想要做SEO優化的話,那麽推薦使用path的形式,反之就是查詢字符串的形式

練習

from flask import Flask,request
app = Flask(__name__)
@app.route(‘/‘)
def hello_world():
    return ‘Hello World!‘
@app.route(‘/list/‘)
def article_list():
    return ‘article list!‘
@app.route(‘/p1/<article_id1>‘)
def article_detail(article_id1):
    return "請求的文章是:%s" %article_id1
@app.route(‘/p2/<string:article_id2>‘)
def article_detail2(article_id2):
    return "請求的文章是:%s" %article_id2
@app.route(‘/p3/<int:article_id3>‘)
def article_detail3(article_id3):
    return "請求的文章是:%s" %article_id3
@app.route(‘/p4/<path:article_id4>‘)
def article_detail4(article_id4):
    return "請求的文章是:%s" %article_id4
# import uuid
# print(uuid.uuid4())
@app.route(‘/p5/<uuid:article_id5>‘)   #數據的唯一性,長度較長,有損效率(一般在用戶表中使用)6a9221f6-afea-424a-a324-8ceaa5bdfc98
def article_detail5(article_id5):
    return "請求的文章是:%s" %article_id5
@app.route(‘/p6/<any(blog,user):url_path>/<id>/‘)
def detail(url_path,id):
    if url_path == "blog":
        return "博客詳情 %s" %id
    else:
        return "用戶詳情 %s" %id
#通過問號形式傳遞參數
@app.route(‘/d/‘)
def d():
    wd = request.args.get(‘wd‘)  #獲取瀏覽器傳遞參數
    return ‘通過查詢字符串的方式傳遞的參數是,%s‘%wd   #請求http://127.0.0.1:8080/d/?wd=php
if __name__ == ‘__main__‘:
    app.run(debug=True,host=‘0.0.0.0‘,port=8080)

Flask基礎之一