flask之Flask、config配置


flask_config.py

  1 '''
  2 flask的配置:
  3     1.flask項目初始化配置:
  4         (1)app=Flask(__name__)#初始化聲明falsk項目為當前py文件,app應用變量名可以更改
  5         (2)Flask()參數配置:
  6             ①template_folder=''指定靜態模板文件頁面所在文件目錄,不指定默認為templates目錄
  7             ②static_folder=''指定靜態文件所在的文件目錄如staticfiles,不指定默認為static目錄
  8                 在默認靜態文件目錄中,模板頁面中的請求路徑直接寫相對路徑,例如:src="/static/1.png"即可直接請求返回
  9                 在更換了自定義靜態文件目錄時,以下兩種方式可以解決靜態文件返回問題:
 10                     a.增加參數配置static_url_path='/static',相當於是請求路徑src="/static/1.png"不變,將請求路徑/static映射到自定義的靜態文件目錄staticfiles
 11                     b.直接修改模板文件中的路徑,例如將src="/static/1.png"改為src="/staticfiles/1.png"(不推薦使用)
 12 
 13 
 14     2.app.config[]的項目實例配置:
 15         (1)常用配置:
 16             "DEBUG": None,                  #debug模式的設置,開發環境用
 17             "TESTING": False,               #測試模式的設置,無限接近線上環境
 18             "SECRET_KEY": None,             #session秘鑰配置
 19             "PERMANENT_SESSION_LIFETIME": timedelta(days=31),   #session有效期時間的設置
 20             "SESSION_COOKIE_NAME": "session",           #cookies中存儲的session字符串的鍵
 21             "JSONIFY_MIMETYPE": "application/json",     #設置jsonify響應時返回的contentype類型
 22         (2)app.config.from_object(self,object)實例化對象進行配置
 23             以DEBUG和TESTING模式設置切換為例:
 24                 ①自定義一個模塊如settings.py
 25                 ②創建兩種模式的不同類,配置相應屬性參數
 26                 ③導入settings.py中的模式類,通過app.config.from_object(self,object)進行配置
 27 '''
 28 
 29 
 30 from flask import Flask, render_template
 31 
 32 
 33 #1.flask項目初始化配置
 34 #templates是flask默認的模板文件目錄,static是falsk默認的靜態文件路徑,只需要配置即可
 35 # ①template_folder=''指定靜態模板文件頁面所在文件目錄,不指定默認為templates目錄
 36 # ②static_folder=''與static_url_path='、static'的配合使用
 37 app=Flask(__name__,template_folder='html',static_folder='staticfiles',static_url_path='/static')
 38 
 39 @app.route('/index')
 40 def index():
 41     return render_template('index0.html')
 42 
 43 
 44 #2.app.config[]的項目實例配置:源碼中default_config字典
 45 '''
 46     default_config = ImmutableDict(
 47         {
 48             "ENV": None,                    #虛擬環境,當前項目運行環境
 49             "DEBUG": None,                  #debug模式的設置,開發環境用,自動重啟項目,日志級別低,報錯在前端顯示具體代碼
 50             "TESTING": False,               #測試模式的設置,無限接近線上環境,不會重啟項目,日志級別較高,不會在前端顯示錯誤代碼
 51             "PROPAGATE_EXCEPTIONS": None,
 52             "PRESERVE_CONTEXT_ON_EXCEPTION": None,
 53             "SECRET_KEY": None,             #session秘鑰配置
 54             "PERMANENT_SESSION_LIFETIME": timedelta(days=31),   #session有效期時間的設置
 55             "USE_X_SENDFILE": False,    
 56             "SERVER_NAME": None,            #主機名設置
 57             "APPLICATION_ROOT": "/",        #應用根目錄配置
 58             "SESSION_COOKIE_NAME": "session",   #cookies中存儲的session字符串的鍵
 59             "SESSION_COOKIE_DOMAIN": None,      #session作用域
 60             "SESSION_COOKIE_PATH": None,        #session作用的請求路徑
 61             "SESSION_COOKIE_HTTPONLY": True,    #session是否只支持http請求方式
 62             "SESSION_COOKIE_SECURE": False,     #session安全配置
 63             "SESSION_COOKIE_SAMESITE": None,
 64             "SESSION_REFRESH_EACH_REQUEST": True,
 65             "MAX_CONTENT_LENGTH": None,
 66             "SEND_FILE_MAX_AGE_DEFAULT": timedelta(hours=12),
 67             "TRAP_BAD_REQUEST_ERRORS": None,
 68             "TRAP_HTTP_EXCEPTIONS": False,
 69             "EXPLAIN_TEMPLATE_LOADING": False,
 70             "PREFERRED_URL_SCHEME": "http",
 71             "JSON_AS_ASCII": True,
 72             "JSON_SORT_KEYS": True,
 73             "JSONIFY_PRETTYPRINT_REGULAR": False,
 74             "JSONIFY_MIMETYPE": "application/json",     #設置jsonify響應時返回的contentype類型
 75             "TEMPLATES_AUTO_RELOAD": None,
 76             "MAX_COOKIE_SIZE": 4093,
 77         }
 78     )
 79 '''
 80 
 81 
 82 #(1)一般開發寫測試需要經常切換debug和測試模式
 83 # app.config['DEBUG']=True      #debug模式,日志級別低,一般在開發環境用,報錯直接回在前端頁面顯示,具體到代碼
 84 # app.config['TESTING']=True      #測試模式,日志級別較高,無限接近線上環境,報錯只在后端顯示具體錯誤,前端頁面之后提示有錯,不會具體顯示
 85 
 86 
 87 @app.route('/test')
 88 def test():
 89     print(int('sdf'))#此行代碼運行會報錯,開啟DEBUG模式,直接在前端頁面顯示錯誤代碼,而在TESTING模式下前端頁面之會提示錯誤,並不會有具體代碼
 90     return '直接通過app.config[]對DEBUG或TESTING模式進行設置!'
 91 
 92 
 93 #(2)通過自定義模塊類來實現debug和測試模式的配置切換(自定義模式切換模塊seetings.py)
 94 from settings import DebugMode
 95 from settings import TestingMode
 96 #使用app.config.from_object(self,object)進行DEBUG或TESTING模式的設置
 97 # app.config.from_object(DebugMode)  #開啟DEBUG模式,直接在前端頁面顯示錯誤代碼
 98 app.config.from_object(TestingMode)  #而在TESTING模式下前端頁面之會提示錯誤,並不會有具體代碼
 99 
100 @app.route('/two_modes')
101 def mode():
102     print(int('sdf11'))#此行代碼運行會報錯
103     return '通過app.config.from_object(self,object)進行DEBUG或TESTING模式的設置!'
104 
105 
106 
107 if __name__ == '__main__':
108     app.run()

index0.html

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>index</title>
 6 </head>
 7 <body>
 8 <h2>項目中指定模板文件目錄html中的index頁面,默認不指定為templates模板目錄</h2>
 9 
10 
11 <div><h2>項目中指定靜態文件目錄staticfiles返回當前圖片,默認不指定為static靜態文件目錄</h2>
12     <img src="/static/1.png" alt=""></div>
13 </body>
14 </html>

seetings.py

1 class DebugMode(object):
2     DEBUG=True
3     SECRET_KEY='SGHJK34H5JKP5OJO6J@#$%^&'
4     SESSION_COOKIE_NAME='NOT SESSION'
5 
6 class TestingMode(object):
7     TESTING=True
8     SECRET_KEY='#$%^&*(*&^%$%^&*(*&^&*()_)(*SGHJK34H5JKP5OJO6J@#$%^&'
9     SESSION_COOKIE_NAME='MD5_DATA'

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM