今日内容
1.路由的分发,以下两种方式效果一样,但是都能指向同一个函数
from flask import Flask app=Flask(__name__) #第一种方式 @app.route('/my_de') def my_de(): return '黑河' #第二种方式 app.add_url_rule( '/my_detail' , view_func=my_de) if __name__== '__main__': app.run(debug=True)
允许请求进入的8种请求方式:
GET POST PULL DELETE OPTIONS
methods = 可迭代对象 [ ] , ( , )
methods=['POST','GET']
endpoint 路由Mapping 地址对应视图函数
url_for 用来反向解析URL地址
url_for(endpoint)
需要了解
strict_slashes=True #是否严格遵循路由匹配 ,默认值是True ,必须严格遵循 defaults={'nid':3} #默认路由由参数 -视图函数中必须有一个nid(key)的形参接收 redirect_to='/index' # 永久重定向 301 不进入视图函数, 直接跳转
动态接收参数(重要,必须要记住)
@app.route('/get_img/<path>/<xixi>') #这里我们接收参数必须要和路由中尖括号括起来的参数一致,否则会报错 def get_img(path,xixi): return f'儿砸儿砸,我是{xixi}'
Flask配置
1.Flask初始化配置 app=Flask(__name__) 1.template_folder='tem' #指定模板存放路径,这里我们不写的话,默认是'templates' 2.static_folder='img3' #指定静态文件的存放路径,默认是'static' 3.static_url_path = '/static' #指定静态文件访问路径 4.static_host = None #静态文件的存放服务器 5.subdomain_matching = False #遵循子域名匹配 2.Flask对象配置 app.config == app.default_config #查看默认配置 及 配置项 class OBJ(object): DEBUG=True app.config.from_object(OBJ) #记住, from_object就是点出来的属性,他能加载各种环境,例如
我在mysettings中创建了两个类
mysettings.py
class Debugsetting(object): DEBUG = True SECRET_KEY = "#$%^&*$%^&*(%^&*(%^&*(" SESSION_COOKIE_NAME = "我都说了我不是Session" JSONIFY_MIMETYPE = "application/javascript" class TestingSetting(object): DEBUG = False TESTING = True SECRET_KEY = "我其实是正式环境的赛克瑞特钥匙" SESSION_COOKIE_NAME = "SHIT" JSONIFY_MIMETYPE = "application/json"
在text.py中,代码如下
from mysetting import DebugSetting from mysetting import TestingSetting # app.config.from_object(DebugSetting) app.config.from_object(TestingSetting) @app.route("/index") def index(): session["key"] = "value" return render_template("index.html") app.run()
此时,如果你app.config.from_object(debugsetting),加载的就是debug环境,要是textingsetting,就是test环境.
app.config['key'] = value
如果你指定了content-type,但是浏览器识别不出来,他会给你下载下来,你手动打开,里面有你的代码
Flask 蓝图(Buleprint)
app.py中
from flask import Blueprint #我们理解buleprint为不能run的flask 实例化的对象 标识不能重复,但是必须有,否则就报错 user=Blueprint('user',__name) @user.route('/users') def func1(): return '我是func1'
如果你想在别的文件中引入,那么你需要注册这个蓝图
from app import user from flask import Flask app=Flask(__name__) app.register_buleprint(user) if __name__ == '__main__': app.run(debug=True)