Flask基礎之一
阿新 • • 發佈:2018-02-06
讀取配置 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模式:
- app.run()
app.run(debug=True)
- app.debug
app.debug = True
- 配置信息方式(使用參數形式的方式)
app.config.update[DEBUG=True] #其實也就是update了config字典
- 通過配置文件的形式
- 創建一個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基礎之一