补充flask基础
自己创建一个SQLHelper
import db_conn
import pymysql
def open_conn():
conn = db_conn.POOL.connection()
cur = conn.cursor(pymysql.cursors.DictCursor)
return conn,cur
def close_conn(cur,conn):
cur.close()
conn.close()
def select_all(sql,arg):
conn,cur = open_conn()
cur.execute(sql,arg)
res_list = cur.fetchall()
close_conn(cur, conn)
return res_list
def insert_help(sql,arg):
conn, cur = open_conn()
cur.execute(sql,arg)
res = conn.commit()
close_conn(cur, conn)
return res
昨日回顾:
1.创建Flask实例 第一Hello
from flask import Flask
app=Flask(__name__,static_folder=,static_url_path,templates_folder=)
@app.route("/",methods=["GET","POST"],endpoint="comeonbaby",strict_slashes=False)
def index():
return HelloOldBoyEDU
app.run()
2.static_folder 静态文件存放路径 static
static_url_path, URL访问静态文件路径 /static
templates_folder 模板存放路径 templates
蓝图中也可以使用以上配置
3.应用配置
app.DEBUG = True
app.secret_key = "xxxx"
app.config.from_object("setting.FlaskSetting")
setting.py:
class FlaskSetting(object):
DEBUG = True,
secret_key = "xxxx"
4.路由系统
访问路径:"/"
methods: 允许当前访问地址的请求方式,默认GET ,["POST"]
endpoint: 反向地址索引
strict_slashes : False结尾可以为 "/" True 不可以
<int:nid> : 动态参数路由,指定了数据类型,只要不符合要求,就不会进入当前视图 def index(nid)
unexpected keyword argument 'nid'
defaults :路由默认参数 {k1:v1} def index(k1)
5. HttpResponse : return "hello"
render_template : return render_template("index.html")
redirect : return redirect("/index")
以上三剑客必须,从flask中导入
6.request : 导入方式
request.from : post 方式提交通常情况
request.args : GET 方式请求url参数
request.files: POST提交的FormData 中带有file
request.method : 请求的方式
request.path(类) : url相关 , 路径相关
request.json : application/json 数据头
request.data :无数据头或数据头不被认可
request.headers :请求头信息
request.values : to_dict 坑 GET 覆盖 POST
request.cookies: 获取浏览器cookie
7.Flask中的Jinja2
for {% for i in list %} {% endfor %}
if {% if 条件 %} {% elif %} {% else %} {% endif %}
list[0] list.0
dict.key dict[key] dict.get(key)
|safe Markup 安全字符串
@app.template_global()
def a_b(a,b)
@app.template_filter()
def a_b(a,b)
1|a_b(2)
{% block content %}
{% endblock %}
include
{% marco func(a) %}
{% endmacro %}
8.session: app.secret_key="xxx"
9.蓝图(Blueprint)
lu = Blueprint("lu",__name__,初始化配置)
@lu.route("/lu")
def lus()
app.register_blueprint(Blueprint.lu)
10. before_request after_requst before_frist_request errorheadler(404)
before_request : 请求之前做处理,比如methods的请求方法
after_requst : 视图函数返回后做处理
before_frist_request : 第一次请求之前做处理
errorheadler : 定义错误信息 def error_page(error_massage)
11. flash 导入
flash("message")
get_flashed_messages() 导入
一存放,一提取,消失