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'
  • 相关阅读:
    【Codeforces 429D】 Tricky Function
    【HDU 1007】 Quoit Design
    S3C2440开发环境搭建(Ubuntu)
    ubuntu 14.04使用root登陆出现错误“Error found when loading /root/.profile”解决
    Ubuntu 14.04下NFS安装配置
    gcc及其选项详解
    class_create(),class_device_create()创建/dev/xxx 名字
    class_create(),device_create自动创建设备文件结点
    ZedGraph 总论
    ZedGraph类库之基本教程篇
  • 原文地址:https://www.cnblogs.com/open-yang/p/11172829.html
Copyright © 2011-2022 走看看