关于Flask的一些事

如何在windows环境创建python虚拟环境?
1.首先安装virtualenv: pip install -i https://pypi.douban.com/simple virtualenv
2.安装完毕之后,进入到项目文件夹,使用命令:virtualenv envname(创建虚拟环境名称为envname的环境)
3.在pycharm里面使用刚才建立的环境

Flask设置配置项:
1、在类中设置
class config(object):
DEBUG=True
app.config.from_object(Config)
2、在配置文件中设置:
新建文件config.ini,然后在文件中写配置信息:例如DEBUG=True
然后在app=Flask(__name__)下一行代码写 app.config.from_pyfile("config.ini")
3、app.config.from_envvar("变量名")
然后Edit configurations里面添加变量名,value写配置文件的路径

app=Flask(__name__,static_url_path="aaa")
static_url_path
静态文件访问路径,可以不传,默认为:/ + static_folder
static_folder
静态文件存储的文件夹,可以不传,默认为 static
即访问的静态文件的路径为127.0.0.1:5000/aaa

app.url_map()
TypeError: 'Map' object is not callable
如何解决:
print(app.url_map) 因为url_map是属性而不是方法,所以当用app.url_map()是会出现 'Map' object is not callable

如何设置路由参数?
@app.route("/user/<int:user_id>") # 这里的<>表示<>里面为参数,int为正则限制整型数据,user_id为形参
def index(user_id):
return "这是用户的数据%s" %user_id

return返回的几种种情况:
返回json
使用框架的jsonify生成一个json相应,直接导入jsonify
dict={"user_id":10,"user_name":"xiaoyifan"}
例如:return jsonify(dict)
2.重定向: # 主要是通过url_for后的视图函数名称反响解析找到app.route("/")的页面
return redirect("https://www.baidu.com")
return redirect(url_for('视图函数名',参数))
3.return '响应内容', 200, {'Name': 'laowang'} #return content[响应体],status[状态码], headers[响应头]),其中status和headers可以省略。

自定义路由转换器:
作用:可以对路由里面的参数进行正则匹配限制,比如限制user_id为4位数字可按如下操作:
1.from werkzeug.routing import BaseConverter
2.新建一个类集成BaseConverter
class MyConverter(BaseConverter):
def _init_(self, map, regex):
super().__init__(map)
self.regex = regex
3.app.url_map.converters['re'] = MyConverser
4.在视图函数使用: @app.route("/user/<re('\d{4}'):user_id>")

如何进行异常捕获?
方法:利用errorhandler 装饰器
@app.errorhandler(404) # 括号里面写捕获的异常的类型,可以是404,405,也可以是ZeroDivisionError等
def page_not_found(e): # e是异常信息(必填项)
return "返回一个404页面%s" % e

钩子函数:beforet_request 可用于csrf验证,after_request在每次视图函数执行没有异常之后执行,有异常时候可以用teardown_request捕获
@app.before_first_request
def before_first_request():
print("before_first_request")

@app.beforet_request
def before_request():
print("before_request")

@app.after_request
def after_request(response):
print("after_request")
return response

@app.teardown_request
def teardown_request(e):
“”“测试异常情况时候要把DEBUG=True去掉”“”
print("teardown_request%s" % e)

 

 

 

posted @ 2019-12-03 15:53  难离若雨  阅读(143)  评论(0编辑  收藏  举报