这两天稍微接触了一点 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)相关推荐

  1. Python Flask基础教程(入门)

    操作系统:Windows Python:3.5 欢迎加入学习交流QQ群:657341423 参考资料:请点击 安装:pip install flask即可 一个简单的Flask from flask ...

  2. Python——Flask基础学习

    摘要 由于公司的大家都是python来实现的项目的构建,因此本文也将来学习相关的python的相关的学习.本章将讲解的是Flask框架的学习. Flask是由python实现的一个web微框架,让我们 ...

  3. python flask 基础入门

    1. Flask 中的Hello World! 在使用pycharm创建一个Flask项目后,将会默认创建一个flask的app,这里来讲下每行代码表示的意义,代码入下 from flask impo ...

  4. python零基础电子书免费下载-零基础入门学习Python PDF 扫描版

    给大家带来的一篇关于Python编程相关的电子书资源,介绍了关于Python.零基础.入门学习方面的内容,本书是由清华大学出版社出版,格式为PDF,资源大小59.3 MB,小甲鱼编写,目前豆瓣.亚马逊 ...

  5. python零基础入门pdf-零基础入门学习Python PDF 扫描版

    给大家带来的一篇关于Python编程相关的电子书资源,介绍了关于Python.零基础.入门学习方面的内容,本书是由清华大学出版社出版,格式为PDF,资源大小59.3 MB,小甲鱼编写,目前豆瓣.亚马逊 ...

  6. python flask快速入门与进阶-Flask基础进阶与python flask实战bbs教程

    ├─Flask基础进阶 │ 01-HTTP 基础知识.mp4 │ 02-python CGI 与 WebServer.mp4 │ 03-virtuanenv配置及Flask快速示例.mp4 │ 04- ...

  7. 知了课堂 Python Flask零基础 笔记整理

    目录 起步 安装Python2.7: Python虚拟环境介绍与安装: pip安装flask: 认识url: URL详解 web服务器和应用服务器以及web应用框架: Flask 第一个flask程序 ...

  8. python没基础可以学吗-终于认识没有基础怎么学python

    在学习完Python的基础知识之后,有很多朋友为自己接下来要干什么感到迷茫.不知道应该通过什么样的项目来锻炼自己编程水平和思维能力.接下来我就给大家说几个适合Python的新手项目和练手项目,Pyth ...

  9. 学会python之后-python学会基础语法之后,如何提高?

    1.找到发展方向,选择合适的学习线路图 我一直都认为找到未来发展方向才是最重要的事情.我说说我自己吧,我一开始觉得python有发展方向,因为我是一个做推广的,也涉及到seo相关工作.我深知道数据的重 ...

最新文章

  1. 欢乐纪中A组周六赛【2019.3.30】
  2. MediaWiki初探:安装及使用入门
  3. centos7 安装mysql8_CentOS 下 MySQL 8.0 安装部署,超详细!
  4. Soul网关源码阅读(六)请求类型探索
  5. Atitit 四种自动机 fsm pda 目录 1. 自动机可分为有限自动机、后进先出自动机、线性有界自动机、图灵机等几种。它们对语言的识别能力各不相同。 2 1.1. 抽象自动机的理论。 2 1.
  6. 【源码】VB6聊天机器人
  7. Chrome插件-JSONView
  8. 上传文件框在firefox浏览器中显示路径不全的解决方法
  9. C++趣味编程——身高预测。
  10. 单系统 台电x80pro_台电X80 Pro (E6E9)-双系统安装文件平板固件
  11. “太上,不知有之;其次,亲而誉之;其次,畏之;其次,侮之。”
  12. 模拟集成电路设计与分析——全差分放大器
  13. 带视频教程|2.0升级版源码价值18500元的商业版游戏陪玩语音聊天系统源码
  14. 关于TI公司DSP工程调用DELAY_US()进入非法中断问题的解决
  15. html中a标签的种类
  16. 关于父组件向子组件传值
  17. 解读-m addrtype --dst-type LOCAL -j DOCKER
  18. xcode archive 后没有dsym文件
  19. GAM做interaction时常见的报错及解决办法
  20. 爱尔威火星车 AirWheel 电动独轮车

热门文章

  1. 模具计算机辅助设计笔试题,模具CADCAM试卷
  2. PAT乙级 数素数(20)
  3. Python入门--变量,浮点型,布尔型,字符串
  4. pair用法 lower_bound upper_bound
  5. bzoj 1179: [Apio2009]Atm(Trajan+SPFA)
  6. bzoj 2599: [IOI2011]Race(树的点分治)
  7. bzoj 1632: [Usaco2007 Feb]Lilypad Pond(BFS)
  8. Echarts数据可视化echarts实例的相关操作,开发全解+完美注释
  9. java使用RSA加密方式实现数据加密解密
  10. js排序算法详解-选择排序