flask初始化参数和路由

1. app = Flask(__name__)

启动模块的"__name__"是写死的,是"__main__";而不是文件名

flask初始化参数和路由

不把模块当启动,当成包被使用,如被导入,则“__name__”是导入的文件名:

flask初始化参数和路由

app = Flask(“__main__”)也是可以的

会自动寻找static文件夹下的文件:

flask初始化参数和路由

flask初始化参数和路由

 

传一个任意字符串,或者留空,都是不友好的。虽然多数情况程序都没问题

 

 

 

2. import name:导入路径(寻找静态目录与模板目录)

static_url_path:默认“static”,

static_folder:默认static

template_folder:默认templates

flask初始化参数和路由

flask初始化参数和路由


'''
/static/index.html  #静态资源,静态目录static,不要误解了为这是路径

urls[    #动态资源
	(r"/",index),
	(r"/login.html",hello)

]
'''

 

 

3. 配置参数的使用方式:
#1.使用配置文件
app.config.from_pyfile("config.cfg")

flask初始化参数和路由

创建config.cfg文件,文件中创建DEBUG = True

app文件中引用:app.config.from_pyfile("config.cfg")

验证:在index()下 写 a = 1/0 ,因为0不能做被除数,所有打开网页后刷新,则可以出现debug模式

flask初始化参数和路由

#2.使用对象配置参数

class Config(object):
    DEBUG = True
app.config.from_object(Config)

#3.参数少的时候,直接操作config的字典对象

app.config["DEBUG"] = True

 

 

4.app.run的参数

app.run(host="0.0.0.0",port=5000)

 

5.查看路由:

app.url_map

flask初始化参数和路由

修改参数:

在装饰器里,添加参数,methods=["post","get"]等

flask初始化参数和路由

flask初始化参数和路由

添加了methods=["GET"]后,返回200

flask初始化参数和路由

通过装饰器:一个规则,对应两个路径,(规则里谁在上面,对应谁的路径 ;只对应一个,显然不好,可以通过限定methods的请求方式,达到都可以访问)

1)两个不同的视图函数使用的是一个路径 

"""
urls = [
	(r"/hello",hello),
	(r"/hello",hello2)
]
"""

flask初始化参数和路由

flask初始化参数和路由        flask初始化参数和路由

2)一个视图函数对应的两个路径:

'''
#伪代码
urls = [
    (r"/he1",he),
    (r"he2",he),
]
'''

#实现代码
@app.route("/he1")
@app.route("/he2") #可以层级的添加装饰器,添加多少都可以
def he():
    return "he page"

flask初始化参数和路由

 

flask初始化参数和路由flask初始化参数和路由

 

 

6.函数反推(尽量不写死,为的是以后修改index的时候不至于无法维护)

from flask import Flask,current_app,redirect,url_for
app = Flask(__name__)

@app.route("/")
def index():
	'''定义的视图函数'''
	return "Hello python world!"


'''
#写死
@app.route("/login")
def login():
    url = "/"
    return redirect(url)
'''


@app.route("/login")
def login():
    #使用url_for的函数,通过视图函数的名字找到视图对应的url路径
    url = url_for("index") #路径的名字,比如起前面的he2
    return redirect(url)

if __name__ == "__main__"
    app.run(debug=True)

"""
urls = [
	(r"/hello",hello,name="index")
	(r"/hello",hello2)
]
redirect(reverse_url("index_view"))
redirect("/index") #写死
"""

flask初始化参数和路由flask初始化参数和路由