python - Flask 基础(1)
这两天稍微接触了一点 Flask 框架,所以分享点基础
1. 配置文件
from flask import Flaskapp = Flask(__name__) # 使用自定义的配置文件 app.config.from_object('settings.Config') """# 内部原理 : con = 'settings.Config' - a,b = con.rsplit('.',maxsplit=1) # 将字符分割- m = importlib.import_module(a) # 导入settings模块- class = getattr(m.b) # 拿到settings下的类 """@app.route('/index') def index():return 'index'if __name__ == '__main__':# print(app.config) # 打印 Flask 下的配置属性 app.run()################### 配置文件.py ####################class Config(object):DEBUG = Falseclass ProductionConfig(Config): # 线上环境使用的配置DEBUG = Falseclass DevelopmentConfig(Config): # 开发环境下使用DEBUG = True
2. 路由系统
from flask import Flask,render_template,request,redirect,session,url_forapp = Flask(__name__)"""endpoint=名字这个名字就指代了当前视图函数的 url 地址如果不写 endpoint 那么 url_for 反向解析的默认值就是当前视图函数的名字 - url_for('index') """# @app.route('/index',methods=['GET','POST'],endpoint='q1') @app.route('/index/<int:nid>',methods=['GET','POST']) def index(nid):"""nid -- 接收上面 url 中的参数接收参数类型:- @app.route('/index<username>') # 字符- @app.route('/index<int:nid>') # 整数- @app.route('/index<float:nid>') # 浮点- @app.route('/index<path:path>') # 路径:param nid::return:"""# print(url_for('q1')) # 反向解析 url : /index# print(url_for('index')) # 默认 函数名 : /index# print(url_for('index',nid=333)) # /index/333return 'INDEX'if __name__ == '__main__':app.run()
3. 请求和响应
from flask import Flask, render_template, request, redirect, session, url_for, jsonify, make_responseapp = Flask(__name__)@app.route('/index', methods=['GET', 'POST']) def index():"""常用 响应方式return 'INDEX'return jsonify({'k1':k2})return render_template()return redirect():return:"""# 设置响应头obj = make_response('Index') # 把要返回的字符串,封装到对象中obj.headers['headers_q'] = 'xxx'obj.set_cookie('k1','v1')return objif __name__ == '__main__':app.run()
4. 模板
"""模板渲染:- 1. 标签解析:方式一:{{txt|safe}}方式二:MarpUp -- Markup("<input type='text' />")- 2. 在模板进行函数调用方式一:自定义一个函数,然后变成参数传递 -- {{fn(7)}}方式二:使用 @app.template_global() 来定义一个全局的函数,在所有模板都可用(加括号) -- {{fn1(1,2)}}方式二:使用 @app.template_filter() 来定义一个全局的函数,在所有模板都可用(加括号) -- {{4|fn2(6,7)}}- 3. 模板继承:- 父模板:{% block content %} {% endblock %}- 子模版:{% extends 'base.html' %}{% block content %}{% endblock %}- 4. 在模块中定义 宏{% macro a(name,type='text',value='') %}<h1>宏</h1><input type="{{type}}" name="{{name}}" value="{{value}}">{% endmacro %}{{a('q')}} """ from flask import Flask,render_template,request,redirect,session,url_for,jsonify,make_response,Markup,flash,get_flashed_messagesapp = Flask(__name__)# 全局函数(加括号) - 可以任何模板中使用 @app.template_global() def fn1(a1,a2):return a1+a2# 参数放的方式不一样,可以用于判断条件 @app.template_filter() def fn2(a1,a2,a3):return a1+a2+a3def fn(arg):return arg@app.route('/index',methods=["GET","POST"]) def index():print('index')info = {'lis':[1,2,3],'txt':"<input type='text' />",'txt1':Markup("<input type='text' />"),'fn':fn}return render_template('models.html',**info)if __name__ == '__main__':app.run()
5. session 简单了解
"""# 当请求刚到来的时:flask 读取cookie 中对应的值,将值解密,并放反序列化成字典,放入内存,以便视图函数使用# 当请求结束时,flask 会读取内存中字典的值,进行序列化和加密,写入 Cookie 中- 只能取一次 session 值:from flask import Falsk, flash, get_fiashed_messagesflash('k1') -- 存放一个值到 session 中- 可以分类:flash('k1','error')flash('k2','error')flash('k3','info')get_flashed_messages() -- 只能获取一次 session 的值- 可以只拿分类中的数据get_flashed_messages(category_filter=['error']) """
6. 特殊装饰器 -- 类似于 Django 中的中间件
from flask import Flask app = Flask(__name__)"""执行顺序:1. before -> Index -> after 2. before1 -> before2 -> Index -> after2 -> after13. before1(如果return) --> after2 -> after1定制错误页面:@app.errorhandler(404)def not_found(arg):return xxx.html"""@app.before_request def x1():print('before')@app.after_request def x2(response):print('after')return response@app.route('/index') def index():print('index')return 'Index'if __name__ == '__main__':app.run()
7. 中间件
"""- call 触发条件:- 用户发起请求时执行 """ from flask import Flask app = Flask(__name__)class Middleware(object):def __init__(self,old):self.old = olddef __call__(self, *args, **kwargs):ret = self.old(*args, **kwargs)return retif __name__ == '__main__':app.wsgi_app = Middleware(app.wsgi_app)app.run()
持续更新...
转载于:https://www.cnblogs.com/chaoqi/p/10487157.html
python - Flask 基础(1)相关推荐
- Python Flask基础教程(入门)
操作系统:Windows Python:3.5 欢迎加入学习交流QQ群:657341423 参考资料:请点击 安装:pip install flask即可 一个简单的Flask from flask ...
- Python——Flask基础学习
摘要 由于公司的大家都是python来实现的项目的构建,因此本文也将来学习相关的python的相关的学习.本章将讲解的是Flask框架的学习. Flask是由python实现的一个web微框架,让我们 ...
- python flask 基础入门
1. Flask 中的Hello World! 在使用pycharm创建一个Flask项目后,将会默认创建一个flask的app,这里来讲下每行代码表示的意义,代码入下 from flask impo ...
- python零基础电子书免费下载-零基础入门学习Python PDF 扫描版
给大家带来的一篇关于Python编程相关的电子书资源,介绍了关于Python.零基础.入门学习方面的内容,本书是由清华大学出版社出版,格式为PDF,资源大小59.3 MB,小甲鱼编写,目前豆瓣.亚马逊 ...
- python零基础入门pdf-零基础入门学习Python PDF 扫描版
给大家带来的一篇关于Python编程相关的电子书资源,介绍了关于Python.零基础.入门学习方面的内容,本书是由清华大学出版社出版,格式为PDF,资源大小59.3 MB,小甲鱼编写,目前豆瓣.亚马逊 ...
- python flask快速入门与进阶-Flask基础进阶与python flask实战bbs教程
├─Flask基础进阶 │ 01-HTTP 基础知识.mp4 │ 02-python CGI 与 WebServer.mp4 │ 03-virtuanenv配置及Flask快速示例.mp4 │ 04- ...
- 知了课堂 Python Flask零基础 笔记整理
目录 起步 安装Python2.7: Python虚拟环境介绍与安装: pip安装flask: 认识url: URL详解 web服务器和应用服务器以及web应用框架: Flask 第一个flask程序 ...
- python没基础可以学吗-终于认识没有基础怎么学python
在学习完Python的基础知识之后,有很多朋友为自己接下来要干什么感到迷茫.不知道应该通过什么样的项目来锻炼自己编程水平和思维能力.接下来我就给大家说几个适合Python的新手项目和练手项目,Pyth ...
- 学会python之后-python学会基础语法之后,如何提高?
1.找到发展方向,选择合适的学习线路图 我一直都认为找到未来发展方向才是最重要的事情.我说说我自己吧,我一开始觉得python有发展方向,因为我是一个做推广的,也涉及到seo相关工作.我深知道数据的重 ...
最新文章
- 欢乐纪中A组周六赛【2019.3.30】
- MediaWiki初探:安装及使用入门
- centos7 安装mysql8_CentOS 下 MySQL 8.0 安装部署,超详细!
- Soul网关源码阅读(六)请求类型探索
- Atitit 四种自动机 fsm pda 目录 1. 自动机可分为有限自动机、后进先出自动机、线性有界自动机、图灵机等几种。它们对语言的识别能力各不相同。	2 1.1. 抽象自动机的理论。	2 1.
- 【源码】VB6聊天机器人
- Chrome插件-JSONView
- 上传文件框在firefox浏览器中显示路径不全的解决方法
- C++趣味编程——身高预测。
- 单系统 台电x80pro_台电X80 Pro (E6E9)-双系统安装文件平板固件
- “太上,不知有之;其次,亲而誉之;其次,畏之;其次,侮之。”
- 模拟集成电路设计与分析——全差分放大器
- 带视频教程|2.0升级版源码价值18500元的商业版游戏陪玩语音聊天系统源码
- 关于TI公司DSP工程调用DELAY_US()进入非法中断问题的解决
- html中a标签的种类
- 关于父组件向子组件传值
- 解读-m addrtype --dst-type LOCAL -j DOCKER
- xcode archive 后没有dsym文件
- GAM做interaction时常见的报错及解决办法
- 爱尔威火星车 AirWheel 电动独轮车
热门文章
- 模具计算机辅助设计笔试题,模具CADCAM试卷
- PAT乙级 数素数(20)
- Python入门--变量,浮点型,布尔型,字符串
- pair用法 lower_bound upper_bound
- bzoj 1179: [Apio2009]Atm(Trajan+SPFA)
- bzoj 2599: [IOI2011]Race(树的点分治)
- bzoj 1632: [Usaco2007 Feb]Lilypad Pond(BFS)
- Echarts数据可视化echarts实例的相关操作,开发全解+完美注释
- java使用RSA加密方式实现数据加密解密
- js排序算法详解-选择排序