zoukankan      html  css  js  c++  java
  • 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'
  • 相关阅读:
    Junit单元测试
    win7的6个网络命令
    WOJ1024 (POJ1985+POJ2631) Exploration 树/BFS
    WOJ1022 Competition of Programming 贪心 WOJ1023 Division dp
    woj1019 Curriculum Schedule 输入输出 woj1020 Adjacent Difference 排序
    woj1018(HDU4384)KING KONG 循环群
    woj1016 cherry blossom woj1017 Billiard ball 几何
    woj1013 Barcelet 字符串 woj1014 Doraemon's Flashlight 几何
    woj1012 Thingk and Count DP好题
    woj1010 alternate sum 数学 woj1011 Finding Teamates 数学
  • 原文地址:https://www.cnblogs.com/open-yang/p/11172829.html
Copyright © 2011-2022 走看看