我们都知道学习了Flask的时候它里面的参数是有很多种的参数  都是需要相互进行调用传递的  今天就简要分析一些常见的参数

首先导入Flask之后看 源码

from flask import Flask

首先看到我们的Flask类继承了一个 _PackageBoundObject类 这个类是有大用处的,下面我们在进行分解

首先找到Flask中的__init__中的 参数

def __init__(self,import_name,  #默认参数必须传递static_url_path=None,  # 静态文件的地址前缀,写的是什么在访问静态文件的时候就会加这个 static_folder='static', #静态文件所在文件夹的名字  默认是static 可以进行修改     static_host=None,host_matching=False,subdomain_matching=False,template_folder='templates',    # 模板所在的文件夹名字,虽然是默认的但是可以修改      instance_path=None,instance_relative_config=False,root_path=None              # 当前执行文件所在目录地址):

当我们执行return render_template 会将root_path和template_folder进行拼接

instance_pathinstance_relative_config是配合来用的:

这两个参数是用来找配置文件的,当用app.config.from_pyfile('settings.py')这种方式导入配置文件的时候会用到

instance_relative_config:默认为False,当设置为True时,from_pyfile会从instance_path指定的地址下查找文件。

instance_path:指定 from_pyfile查询文件的路径,不设置时,默认寻找和app.run()的执行文件同级目录下的instance文件夹,如果配置了instance_path(注意需要是绝对路径),就会从指定的地址下里面的文件

instance_path 这是放置运行时更改的文件和配置文件的最佳位置,也就是我们的默认的配置文件更改之后就会 需要这个配置选项

app = Flask(__name__, instance_path='/path/to/instance/folder')

请注意给出的 一定 是绝对路径。

import_name这个参数只尤其重要的  因为很多的参数的获取都是由import_name来获取的 ,并且这个import_name就是代表我们的实例化传参的__name__

如果没有传递__name__或者import_name就会报错:

class Application(Flask):# 因为它的默认的是在templates但是我没修改了文件存放路径 也需要把寻找文件路径给修改,其中的static文件在正式开发中式不需要的  因为有其他方法可以直接找到def __init__(self,import_name,template_folder = None,root_path =None): #因为模板会自动默认的从templates下找 因为我没改变来的模板路径 所以我们要自定义路径super(Application,self).__init__(import_name,template_folder=template_folder,root_path = root_path,static_folder=None)  # __init__可以查看你所需要的源码self.config.from_pyfile('config/base_setting.py')#导入配置文件

app = Application(__name__,template_folder = os.getcwd()+"/web/templates/",root_path=os.getcwd())

最开始Flask集成的 _PackageBoundObject类 是对我们的

        _PackageBoundObject.__init__(  # 调用自己的init然后接受参数self,import_name,template_folder=template_folder,root_path=root_path)

从上面可以看出Flask 继承自_PackageBoundObject 类,在Flask 的init 魔法方法中调用了父类_PackageBoundObject init 魔法方法.

然后通过传递来的import_name来获取root_path

 def __init__(self, import_name, template_folder=None, root_path=None):self.import_name = import_nameself.template_folder = template_folderif root_path is None:root_path = get_root_path(self.import_name)  # 获取root_pathself.root_path = root_pathself._static_folder = Noneself._static_url_path = None

flask 通过调用父类_PackageBoundObject 初始化方法设置import_name / template_folder / root_path 实例属性的值. root_path 属性的值是使用import_name 属性作为参数,调用get_root_path方法得到的.

通过这里可以更直观的看出 root_path 得到的是主模块所在的目录的绝对路径

也就是我们通过import_name然后得到的参数__name__ 来通过_PackageBoundObject 获取到当前文件的路径,这就是我们的实例化的时候为什么一定要__name__这是为了告诉其他的掉用文件我们的路径

转载于:https://www.cnblogs.com/zhaoyunlong/p/10112978.html

Flask 参数简介相关推荐

  1. 【Android 异步操作】AsyncTask 异步任务 ( 参数简介 | 方法简介 | 使用方法 | AsyncTask 源码分析 )

    文章目录 一.AsyncTask 参数简介 二.AsyncTask 方法简介 三.AsyncTask 基本用法 四.AsyncTask 构造函数源码解析 五.AsyncTask 构造函数相关源码注释 ...

  2. mlx rdma网卡指标参数简介

    mlx rdma网卡指标参数简介 综述 hw_counter counter 参考链接 综述 mlx5 driver在linux sysfs下有一系列的mlx网卡参数和计数器分布在/sys/class ...

  3. JavaScript(ES6)传播算子和rest参数简介

    by Joanna Gaudyn 乔安娜·高登(Joanna Gaudyn) JavaScript(ES6)传播算子和rest参数简介 (An intro to the spread operator ...

  4. postgresql源码学习(45)—— PostmasterMain(2) GUC参数简介及设置

    一. GUC参数简介 1. 参数分类 GUC(Grand Unified Configuration)参数,其实指的就是pg中的各类参数.如果按生效时分类,主要有以下6类(guc.h文件): type ...

  5. CY-TIY物联网实验箱基础实验功能参数简介

    CY-TIY物联网实验箱基础实验功能参数简介 CY-TIY基础实验: 1)LED实验 1)独立按键实验 3)矩阵键盘实验 4)AD转换实验 5)串口通信实验 6)步进电机实验 7)实时时钟实验 8)液 ...

  6. RTKLIB 2.4.2后处理PPP设置参数简介

    RTKLIB 2.4.2后处理PPP设置参数简介 添加必选文件 通过Options界面配置解算参数并添加可选文件 Setting1选项卡配置参数输入 Setting2选项卡设置整周模糊度固定策略 Ou ...

  7. 【Flask】Flask框架简介

    Flask框架简介 Flask是一个使用 Python 编写的轻量级 Web 应用框架.来源-百度百科 MVC框架对比 框架 概述 Flask 全能框架.学习成本较大 Django 微框架.易学习.J ...

  8. flask flask参数 app 配置

    实例化Flask 的参数   及 对app  的配置 lask 是一个非常灵活且短小精干的web框架 , 那么灵活性从什么地方体现呢? Flask配置 app.config["DEBUG&q ...

  9. 光纤传像束原理、特点和主要参数简介

    1.光纤传像束简介 光纤传像束作为传像元件,实现光能在空间二维分布上的传输和变换.英国人 J.L.Baird 和德国人 H.Larm 在上世纪二三十年代首先提出利用光的全反射原理把柔软的光纤集合成束传 ...

最新文章

  1. MySQL数据库+命令大全+常用操作
  2. 用自然语言从GitHub搜代码,跳过论坛提问环节,来自Facebook新研究
  3. 前端(慕课网)笔记一
  4. jpa 自定义sql if_数据产品经理必备之SQL基础
  5. Java中数组在内存中的存放原理?
  6. 《BI那点儿事》Microsoft 线性回归算法
  7. OpenCV 4.x 中请别再用HAAR级联检测器检测人脸!有更好更准的方法
  8. 数据卡片_手把手教你构建企业实时数据大屏
  9. Spring4-自动装配Beans-按属性的数据类型自动装配Bean
  10. JavaScript变量、属性、函数、方法的区别(1)
  11. 大数据可视化有什么优点
  12. JSEclipse安装后无法打开js文件_如何在你的 PC 上 下载并配置 Node.js
  13. 13个绚丽的Jquery 界面设计
  14. steam一键授权工具_超实用小工具!一键将PC其它平台的游戏导入Steam
  15. 银行综合前置系统IFS
  16. android ndk adk 旧版本下载
  17. 英伟达显卡虚拟化vGPU实践指南
  18. hive执行insert overwrite失败,报错 could notbe cleaned up错误
  19. PHP、Python 和 Ruby 语言的区别
  20. js插件--1.swal

热门文章

  1. [转载] Spring的数据库操作---- Spring框架对JDBC的整合---- spring集成jdbc概述
  2. zabbix--基础概念及原理
  3. C# WPF MVVM 实战 – 3 – 树结构
  4. 介绍codesmith工具
  5. 关于标题的多HTML定制
  6. Tensorflow简单使用(一)
  7. 产生斜体的html标签,下列可以产生斜体字的 HTML 标签是_____________
  8. python中for循环语句格式_python中for循环和可迭代对象遍历
  9. BCrypt加密怎么存入数据库_松哥手把手带你入门 Spring Security,别再问密码怎么解密了...
  10. Telnet服务器的系统要求,Telnet 服务器概述