我们都知道学习了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_name
self.template_folder = template_folder if root_path is None:
root_path = get_root_path(self.import_name) # 获取root_path self.root_path = root_path
self._static_folder = None
self._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__这是为了告诉其他的掉用文件我们的路径

Flask 参数简介的更多相关文章

  1. mqtt------ mosca服务器端参数简介

    一:服务器端 为什么使用mosca:mosca是基于node.js开发,上手难度相对较小,其次协议支持完整,除了不支持Qos 2,其它的基本都支持.持久化支持redis以及mongo.二次开发接口简单 ...

  2. Flask小总结+实例化Flask参数以及对app的配置

    Flask 小而精 三方组件全 稳定性相对较差 1.启动: from flask import Flask app = Flask(__name__) app.run("0.0.0.0&qu ...

  3. 【ABAP系列】SAP abap dialog screen屏幕参数简介

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP abap dialog ...

  4. Flask (一) 简介

    Flask简介 Flask是一个基于Python实现的Web开发‘微’框架 'MicroFramework' Django是一个重型框架 官方文档: http://flask.pocoo.org/do ...

  5. Flask 框架 简介

    一.Flask介绍 Flask是一个基于Werkzeug,Jinja 2 轻量级的web开发框架, 使用Python开发, 上手简单. 二.安装Flask 三.第一个Flask程序 1.编写app.p ...

  6. Flask参数解析、请求钩子

    转载请注明出处 https://www.cnblogs.com/chenxianpao/p/9949279.html  参数解析 Flask的参数解析主要用Request完成(from flask i ...

  7. HOG参数简介及Hog特征维数的计算(转)

    HOG构造函数 CV_WRAP HOGDescriptor() :winSize(64,128), blockSize(16,16), blockStride(8,8),      cellSize( ...

  8. VM参数简介

    http://www.cnblogs.com/yuzhaoxin/p/4083612.html block_dump Linux 内核里提供了一个 block_dump 参数用来把 block 读写( ...

  9. 【转载】va_list 可变参数 简介 va_copy vprintf

    [说明]本文转载自 smart 的文章 http://blog.sina.com.cn/s/blog_590be5290100qhxr.html  及百度百科 va_list是一个宏,由va_star ...

随机推荐

  1. Java SPI机制和使用示例

    JAVA SPI 简介 SPI 是 Java 提供的一种服务加载方式,全名为 Service Provider Interface.根据 Java 的 SPI 规范,我们可以定义一个服务接口,具体的实 ...

  2. j2ee高级开发技术课程第二周(web请求的整个过程、XML)

    博客非原创,只是收集整理了一下网上的一些文章 一.web请求的整个过程 1)把URL分割成几个部分:协议.网络地址.资源路径.其中网络地址指示该连接网络上哪一台计算机,可以是域名或者IP地址,可以包括 ...

  3. Go 开发

    0.参数传递永远是值传递,地址也是一种值 1.go 开发环境的配置 2.import 包的几种形式: 1)_,默认导入一个包时,会将包中内容导入再执行包中的init()方法,有时并不需要某个包,只是想 ...

  4. 笔记六:python字符串运算与函数

    一:学习内容 字符串运算 字符串函数-strip() 字符串函数-大小写互换 字符串函数-字符串对齐 字符串函数-搜索 字符串函数-替换 字符串函数-split切割 字符串函数-连接join 字符串函 ...

  5. CentOS Maven 删除 *.lastUpdated文件

    find . -name "*.lastUpdated" -exec rm -rf {} \;

  6. [C++][转]CPU字节序 网络序 主机序 大端小端

    原帖:http://www.cnblogs.com/darktime/p/3298075.html 不同的CPU有不同的字节序类型 这些字节序是指整数在内存中保存的顺序 这个叫做主机序最常见的有两种1 ...

  7. antlr提取代码注释

    1. 来由 为什么要写提取注释呢,起因是工作需要.弄这么个不太重要的功能点来讲,旨在抛砖引玉. 一般而言,大家使用antlr解析源代码的时候,不会关心注释和空格之类内容,默认会过滤掉,不会放到语法树里 ...

  8. 简单Tomcat HTTP RPC框架

    RPC基础知识 什么是RPC? RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议. ...

  9. windows server服务器上部署java+tomcat网站域名配置

    如果只是部署java项目的话,可以把IIS删除,然后在服务器上安装jdk tomcat 配置好环境变量,就和你在自己计算机上开发一样,把你的项目war包拷到tomcat下的webapps里(任意目录都 ...

  10. Ajax中的同步和异步

    var flag=true; ; $.ajax({ url: "http://www.jb51.net/", success: function(data){ flag=false ...