flask初始化参数和路由
1. app = Flask(__name__)
启动模块的"__name__"是写死的,是"__main__";而不是文件名
不把模块当启动,当成包被使用,如被导入,则“__name__”是导入的文件名:
app = Flask(“__main__”)也是可以的
会自动寻找static文件夹下的文件:
传一个任意字符串,或者留空,都是不友好的。虽然多数情况程序都没问题
2. import name:导入路径(寻找静态目录与模板目录)
static_url_path:默认“static”,
static_folder:默认static
template_folder:默认templates
'''
/static/index.html #静态资源,静态目录static,不要误解了为这是路径
urls[ #动态资源
(r"/",index),
(r"/login.html",hello)
]
'''
3. 配置参数的使用方式:
#1.使用配置文件
app.config.from_pyfile("config.cfg")
创建config.cfg文件,文件中创建DEBUG = True
app文件中引用:app.config.from_pyfile("config.cfg")
验证:在index()下 写 a = 1/0 ,因为0不能做被除数,所有打开网页后刷新,则可以出现debug模式
#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
修改参数:
在装饰器里,添加参数,methods=["post","get"]等
添加了methods=["GET"]后,返回200
通过装饰器:一个规则,对应两个路径,(规则里谁在上面,对应谁的路径 ;只对应一个,显然不好,可以通过限定methods的请求方式,达到都可以访问)
1)两个不同的视图函数使用的是一个路径
"""
urls = [
(r"/hello",hello),
(r"/hello",hello2)
]
"""
2)一个视图函数对应的两个路径:
'''
#伪代码
urls = [
(r"/he1",he),
(r"he2",he),
]
'''
#实现代码
@app.route("/he1")
@app.route("/he2") #可以层级的添加装饰器,添加多少都可以
def he():
return "he page"
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") #写死
"""