Flask:初识;简单使用;Werkzeug简介;Flask四剑客;配置文件
一 Flask初识
参考链接:https://www.cnblogs.com/xiaoyuanqujing/articles/11643999.html#_label0
1.什么是Flask:
flask和django同步web框架,但flask是一个短小精悍的轻量级框架,它只包含基本配置默认依赖2个外部库默认依赖于2个外部库: Jinja2 模板引擎和 WSGI工具集--Werkzeug工具包。
flask默认IP端口为:http://127.0.0.1:5000/
2.安装Flask:
cmd窗口
pip3 install flask
二 Flask简单使用(fbv为例)
1.主文件app.py代码
# 1.导入模块
from flask import Flask
# 2.产生flsak对象
app = Flask(__name__) # __name__这个特殊的参数:Python会根据所处的模块来赋予__name__变量相应的值,对于我们的程序来说(app.py),这个值为app。
#2. 路由和对应函数
@app.route('/')
def hello_world():
return 'Hello World!'
#3.运行程序
if __name__ == '__main__':
app.run()
三 Werkzeug简介
建议链接地址:https://www.cnblogs.com/xiaoyuanqujing/articles/11643999.html#_label0
四 Flask四剑客
1.返回字符串:return '字符串'
from flask import Flask app=Flask(__name__) @app.route('/') def index(): #1直接返回字符串 return "ok1" if __name__ == '__main__': app.run()
2.返回html页面: return render_template("html文件",k1=参数1,k2=参数2)
# 前端
# 后端 from flask import Flask,render_template app=Flask(__name__) @app.route('/') def index(): #返回html name_dict={"name":"jason-gdx"} # 返回html页面,并携带参数时参数格式要为:k=v return render_template("index.html",name="jason-gdx",name_dict=name_dict)
# 前端templates文件夹中html文件
注意:传入前端的数据如字典列表注意取值方式和python中相似
#1.for循环字典 {% for k,v in user_dict.items() %} #2. {{k}} #3.字典取值 {{v.name}} {{v['name']}} {{v.get('name')}} #4.列表 {{ls[0]}} {{ls.0}}
#3.if判断
{% if name %} <h1>Hello {{ name }}!</h1> {% else %} <h1>Hello World!</h1> {% endif %}
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> {{info}} {{info.name}} {{info['name']}} {{info.get('name')}} </body> </html>
3.路由跳转:return redirect("路由地址")
from flask import Flask,redirect app=Flask(__name__) @app.route('/') def index(): # 跳转页面 return redirect("/login")
4.返回json字符串
from flask import Flask,jsonify app=Flask(__name__) @app.route('/') def index(): #返回json数据 name_dict = [{'name': "jason-gdx"},{'name': "tank-sb"}] return jsonify(name_dict)
五 配置文件
flask中的配置文件是一个flask.config.Config对象(继承字典),默认配置为:
{ 'DEBUG': get_debug_flag(default=False), 是否开启Debug模式 'TESTING': False, 是否开启测试模式 'PROPAGATE_EXCEPTIONS': None, 'PRESERVE_CONTEXT_ON_EXCEPTION': None, 'SECRET_KEY': None, 'PERMANENT_SESSION_LIFETIME': timedelta(days=31), 'USE_X_SENDFILE': False, 'LOGGER_NAME': None, 'LOGGER_HANDLER_POLICY': 'always', 'SERVER_NAME': None, 'APPLICATION_ROOT': None, 'SESSION_COOKIE_NAME': 'session', 'SESSION_COOKIE_DOMAIN': None, 'SESSION_COOKIE_PATH': None, 'SESSION_COOKIE_HTTPONLY': True, 'SESSION_COOKIE_SECURE': False, 'SESSION_REFRESH_EACH_REQUEST': True, 'MAX_CONTENT_LENGTH': None, 'SEND_FILE_MAX_AGE_DEFAULT': timedelta(hours=12), 'TRAP_BAD_REQUEST_ERRORS': False, 'TRAP_HTTP_EXCEPTIONS': False, 'EXPLAIN_TEMPLATE_LOADING': False, 'PREFERRED_URL_SCHEME': 'http', 'JSON_AS_ASCII': True, 'JSON_SORT_KEYS': True, 'JSONIFY_PRETTYPRINT_REGULAR': True, 'JSONIFY_MIMETYPE': 'application/json', 'TEMPLATES_AUTO_RELOAD': None, }
详解DEBUG模式和四种配置使用方式
详情链接:https://www.cnblogs.com/xiaoyuanqujing/articles/11643999.html
1.DEBUG模式2个作用
-
flask代码中如果出现了异常,我们在浏览器中不会提示具体的错误信息,开启debug模式后会把具体的错误信息发送到浏览器上。
-
flask代码如果被修改了,必须要重启项目修改的代码才会有效,开启debug模式后我们修改了代码只要
ctrl+s
我们的flask项目就会自动重新加载,不需要手动加载整个网站
开启示例(多种方式)
from flask import Flask app = Flask(__name__) @app.route('/') def hello(): a = [1,2,3,4] print(a[4]) return "hello" if __name__ == '__main__': app.run(debug=True)
2.种配置使用方式(以debug为例)
from flask import Flask app=Flask(__name__) #配置文件1,这中方式只能配置两种 app.debug=True app.secret_key="123123" #第二种,以字典的形式 app.config['DEBUG']=True #第三种,以文件的形式:app.config.from_pyfile("文件名") app.config.from_pyfile("settings.py") #settings.py文件代码 DEBUG = True #第四种以类的形式(推荐):app.config.from_object('类的路径') app.config.from_object('settings.DevelopmentConfig') #settings.py文件中类 class DevelopmentConfig(Config): DEBUG = True