文章目录

一、flask应用对象初始化参数说明1 `__name__`讲解2 flask以这个模块所在的目录为根目录3 `Flask(__name__) `除了能传`__name__`还能传哪些参数

二 、 静态文件目录与路由说明三 、 flask的配置参数设置配置参数设置方法1 (文件)配置参数设置方法2 (类)配置参数设置方法3 (字典)

四 、读取配置参数的方式五 、读取配置参数的方式

一、flask应用对象初始化参数说明

1 __name__讲解

from flask import Flask #导入类

#创建flask应用对象

#__name__表示当前模块名;模块名:flask以这个模块所在的目录为根目录,默认这个目录中的static为静态目录。templates为模板目录

app=Flask(__name__) #__name__属于Python中的内置类属性,代表对应程序名称。如果当前运行的程序是主程序,此时__name__的值就是__main__,反之,则是对应的模块名。

#@app.route("/index") #将视图函数与路由绑定在一起

@app.route("/")#路由 #将视图函数与路由绑定在一起 。/类似网址的/

def index():

"""

定义的视图函数

:return:

"""

return "hello world"

if __name__=="__main__":

app.run()#运行,启动程序

    在代码中app=Flask(__name__) 大家可能__name__ 有所疑惑。反映的是当前模块的名字。

示例1,创建一个demo.py,模块作为启动

print(__name__)

    输出为,__main__。一个文件创建出来,模块名不等于文件名,如果模块作为启动,模块名就是__main__

示例2,模块不作为启动

    把demo.py 导入到其它文件里hello.py

from flask import Flask #导入类

import web.demo #demo.py 导入

#创建flask应用对象

#__name__表示当前模块名;模块名:flask以这个模块所在的目录为根目录,默认这个目录中的static为静态目录。templates为模板目录

app=Flask(__name__) #__name__属于Python中的内置类属性,代表对应程序名称。如果当前运行的程序是主程序,此时__name__的值就是__main__,反之,则是对应的模块名。

#@app.route("/index") #将视图函数与路由绑定在一起

@app.route("/")#路由 #将视图函数与路由绑定在一起 。/类似网址的/

def index():

"""

定义的视图函数

:return:

"""

return "yudengwu 520 liyueyue"

if __name__=="__main__":

app.run()#运行,启动程序

    可以看出__name__如果不作为启动模块,导入到其它文件,其模块名为文件路径。

总结     由此可以看出,if __name__=="__main__": app.run()#运行,启动程序。如果 __name__为启动文件,即__name__=="__main__,则执行程序。否则程序作为包导入其它文件,就不执行该程序。就理解了该行代码意思。      也能说明,当hello.py作为启动文件时,app=Flask(__name__) 等效为app=Flask(__main__) 。

2 flask以这个模块所在的目录为根目录

示例1 ,以URL形式访问静态文件

    首先要在Python工程中创建一个目录static(名字和相对位置均不能改动)。如下所示,并在静态文件中新建一个文件例如txt文件、json文件、html文件等)展示静态文件的手段有三种,分别是直接输入url访问、通过路由访问和重定向访问。

    启动hello.py。在网址后面输入static/index.html 即static/文件名

     该例子说明 Flask(__name__) 会顺着这个模块所在根目录查找东西。

示例2

在app=Flask("abcdef") 乱输入一对字符,启动程序

from flask import Flask #导入类

#创建flask应用对象

#__name__表示当前模块名;模块名:flask以这个模块所在的目录为根目录,默认这个目录中的static为静态目录。templates为模板目录

app=Flask("abcdef") #__name__属于Python中的内置类属性,代表对应程序名称。如果当前运行的程序是主程序,此时__name__的值就是__main__,反之,则是对应的模块名。

#@app.route("/index") #将视图函数与路由绑定在一起

@app.route("/")#路由 #将视图函数与路由绑定在一起 。/类似网址的/

def index():

"""

定义的视图函数

:return:

"""

return "yudengwu 520 liyueyue"

if __name__=="__main__":

app.run()#运行,启动程序

     发现还是能运行,这是因为如果程序找不到目录“abcdef”,就会以当前文件所在目录为根目录进行查找。但是千万不要这样写。因为有些字符为Python标准库,是能找到的,如这里输入的不是“abcdef”而是其它Python内置库字符,是会出错的。

3 Flask(__name__) 除了能传__name__还能传哪些参数

__name__ 是寻找静态目录和模板目录位置的参数static_url_path是访问静态资源的url前缀,默认为static

from flask import Flask #导入类

#创建flask应用对象

app=Flask(__name__,

static_url_path="/python",#访问静态资源的url前缀,默认为static

)

#@app.route("/index") #将视图函数与路由绑定在一起

@app.route("/")#路由 #将视图函数与路由绑定在一起 。/类似网址的/

def index():

"""

定义的视图函数

:return:

"""

return "yudengwu 520 liyueyue"

if __name__=="__main__":

app.run()#运行,启动程序

     网址上需加python才能访问静态文件(本文静态文件夹名还是static,未修改)

static静态文件的目录,默认static

app=Flask(__name__,

static_url_path="/python",#访问静态资源的url前缀,默认为static

static_folder="static",#静态文件的目录,默认static

)

static模板文件的目录,默认static

app=Flask(__name__,

static_url_path="/python",#访问静态资源的url前缀,默认为static

static_folder="static",#静态文件的目录,默认static

template_folder="static",#模板文件的目录,默认static

)

二 、 静态文件目录与路由说明

     讲解static_url_path和 static_folder的区别。

static_url_path: 前端访问资源文件的前缀目录。(当url有资源文件和动态视图函数时。static_url_path可指明连接后面的为资源文件)static_folder: 后端存储资源文件的目录。默认是/static,就是指明你后端的资源文件

三 、 flask的配置参数设置

app.config.from_ pyfile(’ yourconfig.cfg")或 app.config.from object()或 app.config.from_envvar#从环境 config配置

配置参数设置方法1 (文件)

以配置一个调试为例。 第一步:创建一个调试文件,后缀设为cfg。并在文件中写入内容。DEBUG=True

第二步:配置参数使用方法。使用配置文件app.config.from_pyfile("config.cfg")

from flask import Flask #导入类

#创建flask应用对象

app=Flask(__name__)

#使用配置文件

app.config.from_pyfile("config.cfg")

#@app.route("/index") #将视图函数与路由绑定在一起

@app.route("/")#路由 #将视图函数与路由绑定在一起 。/类似网址的/

def index():

"""

定义的视图函数

:return:

"""

return "yudengwu 520 liyueyue"

if __name__=="__main__":

app.run()#运行,启动程序

可以看到截图中 Debugger is active!

第三步:设置一个错误代码。

def index():

"""

定义的视图函数

:return:

"""

a=1/0

return "yudengwu 520 liyueyue"

配置参数设置方法2 (类)

#创建配置类

class Config(object):

DEBUG=True

#使用配置

app.config.from_object(Config)

配置参数设置方法3 (字典)

config是一个字典。

app.config["DEBUG"]=True

四 、读取配置参数的方式

    有时候在配置里面写了一些参数,我们想在视图函数里面读取出来。 方法1:字典读取     因为config是一个字典,可以以字典形式读取 print(app.config.get("ITCAST")) print(app.config["ITCAST"])

from flask import Flask #导入类

#创建flask应用对象

app=Flask(__name__)

class Config(object):

DEBUG=True

ITCAST="python"

#使用配置

app.config.from_object(Config)

#@app.route("/index") #将视图函数与路由绑定在一起

@app.route("/")#路由 #将视图函数与路由绑定在一起 。/类似网址的/

def index():

"""

定义的视图函数

:return:

"""

print(app.config.get("ITCAST"))

print(app.config["ITCAST"])

return "yudengwu 520 liyueyue"

if __name__=="__main__":

app.run()#运行,启动程序

    结果,运行后先点击网址,然后在后台出现下面

方法2:current_app     有时会出现在视图函数里够不着app对象。使用current_app为app的全局对象的代理人。

from flask import Flask,current_app #导入类

#创建flask应用对象

app=Flask(__name__)

class Config(object):

DEBUG=True

ITCAST="python"

#使用配置

app.config.from_object(Config)

#@app.route("/index") #将视图函数与路由绑定在一起

@app.route("/")#路由 #将视图函数与路由绑定在一起 。/类似网址的/

def index():

"""

定义的视图函数

:return:

"""

print(current_app.config.get("ITCAST"))

print(current_app.config["ITCAST"])

return "yudengwu 520 liyueyue"

if __name__=="__main__":

app.run()#运行,启动程序

五 、读取配置参数的方式

run(self, host=None, port=None, debug=None, load_dotenv=True, **options)

app.run()#运行,启动程序

host: Host:监听的主机名。将此设置为“0.0.0.0” 在外部也要有可用的服务器。默认为 ’ ‘127.0.0.1’ ’ ‘或’ SERVER_NAME ’ ‘配置变量中的主机 如果存在。 端口:web服务器的端口号。默认为’ 5000 ‘或 端口定义在’ ’ SERVER_NAME ’ '配置变量中。

如果想要外部服务器也能访问,设置为通配符0.0.0.0

app.run(host="0.0.0.0",port=5000)#运行,启动程序

也可以在app.run()设置调试debug

好文阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: