Python的Flask开发框架简单上手笔记

最简单的hello world

#!/usr/bin/env python# encoding: utf-8from flask import Flaskapp = Flask(__name__)@app.route('/')def index():  return 'hello world'if __name__ == '__main__':  app.run(debug=True)  #app.run(host='127.0.0.1', port=8000)

登录后复制

之后,访问http://localhost:5000

支持post/get提交

@app.route('/', methods=['GET', 'POST'])

登录后复制

多个url指向

@app.route('/')@app.route('/index')

登录后复制

不管post/get使用统一的接收

from flask import requestargs = request.args if request.method == 'GET' else request.forma = args.get('a', 'default')

登录后复制

处理json请求
request的header中

"Content-Type": "application/json"

登录后复制

处理时:

data = request.get_json(silent=False)

登录后复制

获取post提交中的checkbox

{%for page in pages %}{%endfor%}page_ids = request.form.getlist("do_delete")

使用url中的参数

@app.route('/query//')def query(qid):  pass

登录后复制

在request开始结束dosomething
一般可以处理数据库连接等等

from flask import gapp = .....@app.before_requestdef before_request():  g.session = create_session()@app.teardown_requestdef teardown_request(exception):  g.session.close()

登录后复制

注册Jinja2模板中使用的过滤器

@app.template_filter('reverse')def reverse_filter(s):  return s[::-1]

登录后复制

或者

def reverse_filter(s):  return s[::-1]app.jinja_env.filters['reverse'] = reverse_filter

登录后复制

可以这么用

def a():...def b():...FIL = {'a': a, 'b':b}app.jinja_env.filters.update(FIL)

登录后复制

注册Jinja2模板中使用的全局变量

JINJA2_GLOBALS = {'MEDIA_PREFIX': '/media/'}app.jinja_env.globals.update(JINJA2_GLOBALS)

登录后复制

定义应用使用的template和static目录

app = Flask(__name__, template_folder=settings.TEMPLATE_FOLDER, static_folder = settings.STATIC_PATH)

登录后复制

使用Blueprint

from flask import Blueprintbp_test = Blueprint('test', __name__)#bp_test = Blueprint('test', __name__, url_prefix='/abc')@bp_test.route('/')--------from xxx import bp_testapp = Flask(__name__)app.register_blueprint(bp_test)

登录后复制

实例:

立即学习“Python免费学习笔记(深入)”;

bp_video = Blueprint('video', __name__, url_prefix='/kw_news/video')@bp_video.route('/search/category/', methods=['POST', 'GET'])#注意这种情况下Blueprint中url_prefix不能以 '/' 结尾, 否则404

登录后复制

使用session
包装cookie实现的,没有session id

app.secret_key = 'PS#yio`%_!((f_or(%)))s'

登录后复制

然后

from flask import sessionsession['somekey'] = 1session.pop('logged_in', None)session.clear()#过期时间,通过cookie实现的from datetime import timedeltasession.permanent = Trueapp.permanent_session_lifetime = timedelta(minutes=5)

登录后复制

反向路由

from flask import url_for, render_template@app.route("/")def home():  login_uri = url_for("login", next=url_for("home"))  return render_template("home.html", **locals())

登录后复制

上传文件


登录后复制

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2534973.html

(0)
上一篇 2025年3月5日 22:13:02
下一篇 2025年2月26日 20:22:35

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论