文章目录
一、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
好文阅读
发表评论