前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Flask入门

Flask入门

作者头像
py3study
发布2020-01-16 15:37:56
4100
发布2020-01-16 15:37:56
举报
文章被收录于专栏:python3python3

本文参考博客:https://blog.csdn.net/xiaoyuan511?t=1

Flask是轻量级的Web开发框架,只具备基本的核心内容-->视图和路由,其他的功能都需要第三方或者自己手写

建立第一个Flask程序

pip install flask 先下载flask

代码语言:javascript
复制
from flask import Flask

'''
__name__:表示当前的模块名字
创建Flask对象,Flask会以传入模块的位置当做家目录
'''
app = Flask(__name__)

@app.route('/')  # 路由 /代表首页
def hello_world():  # 视图函数
    return 'Hello World!'  # 返回内容
    
if __name__ == '__main__':
    app.run()  # 运行程序

参数配置

  • 配置文件
    • 在文件新建一个名字为config.cfg的文件,在里面写上一下语句,表示开启调试模式,帮助我们快速定位错误。 DEBUG = True

    用from_pyfile()来加载配置文件 app.config.from_pyfile('config.cfg')

  • 类方式

    class Config(object): DEBUG = True app.config.from_object(Config)

  • 直接操作 app.config['DEBUG'] = True
  • 对象上配置 app.debug = True
  • 运行时传入参数(该方法只限debug) app.run(debug=True) # 运行程序

取配置参数

  • app.config.get('参数的建的名字')
  • current_app.config.get()
  • 两种方法类似,第二种方法以后再说

路由

其实就是我们在浏览器输入地址后,后台进行匹配,如果匹配上,则执行此视图函数并返回内容 用app.route()的装饰器进行装饰到视图函数,匹配的内容是去掉域名和端口后面地址 ‘http://127.0.0.1:8000/index’ 这个地址,去掉域名和端口后就剩下/index这部分内容,所有我们只要装饰/index就可以了。

@app.route('/index') # 代表首页

重定向
代码语言:javascript
复制
from flask import redirect, url_for
"""
redirect函数用于重定向。
url_for参数是视图函数函数的名字,它会根据视图函数的名字找到装饰次视图的路由。
"""
@app.route('/')
def index():
    return 'my index !'  
"""
methods=['POST','GET']
表示允许的请求方法
"""    
@app.route('/login',methods=['POST','GET'])  # 代表登录的路由
def login():
    return redirect(url_for('index'))
 # 登录后立即重定向到首页

转换器

转换器

含义

default

接受字符串,默认转换器

stirng

接受字符串,跟默认一样

int

接受整数

float

同 int 但是接受浮点数

uuid

唯一识别码

path

和默认的相似,但也接受斜线

由源码可知转换器的匹配规则是正则

自定义转化器
在这里插入图片描述
在这里插入图片描述

源码里面有两个参数 需要记一下

在这里插入图片描述
在这里插入图片描述

to_python 每当使用装唤器就会调用 to_url 重定向时候才调用 具体的关系 可以参考这篇博客:

https://blog.csdn.net/xiaoyuan511/article/details/88540254

模板

在项目的目录下新建一个templates的文件夹,来放置html页面 注意: 模板的文件名字(默认templates) 可以自己写

在这里插入图片描述
在这里插入图片描述

后台渲染模板的需要导入 render_template 函数 渲染方式:

在这里插入图片描述
在这里插入图片描述

在模板里使用变量 用 {{}}

在这里插入图片描述
在这里插入图片描述

判断 循环 用{% %}

在这里插入图片描述
在这里插入图片描述

过滤器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

自定义过滤器 需要注册到flask的过滤器中

在这里插入图片描述
在这里插入图片描述

在页面中使用

在这里插入图片描述
在这里插入图片描述

自定义的过滤器是可以添加参数的 '%Y-%m-%d %H:%M' => 过滤器里的mode

Request

在flask中,request对象是一个全局的,在任何地方都可以使用。 这里比较简单 需要记住两种方式的取参的语法

  • GET
    • get 取参数用args 或者values
  • POST
    • get 取参数用args 或者values

Response

flask 有一个make_response()方法来返回一个HttpResponse对象

在这里插入图片描述
在这里插入图片描述

jsonify --> 返回json 数据格式

在这里插入图片描述
在这里插入图片描述

在来说一下cookie 我们都知道HTTP协议是无状态的请求协议,用户这次访问和下一次访问都是新的请求,它们之间是没任何关系的。但是我们需要知道上一次访问用户做了什么操作,就需要用到cookie。cookie是网站以键值对格式存储在浏览器中的一段纯文本信息,用于实现用户跟踪。cookie是基于域安全的 我们通过set_cookie方法设置cookie

代码语言:javascript
复制
resp.set_cookie('age', "12")  # 设置cookie

通过get()取cookie

代码语言:javascript
复制
 age = request.cookies.get('age') # 如果没有值就返回 None
#  age = request.cookies['age'] 如果没有值或报错

设置过期时间

  1. max_age e是一个整数,表示在指定秒数后过期。
  2. expires datetime或timedelta对象,会话将在这个指定的日期/时间过期。 以上两种方法二选一。
  3. 如果不指定过期时间,在关闭浏览器时cookie会过期。 删除cookie
代码语言:javascript
复制
res.delete_cookie('nickname')  # 删除的cookie的本质就是改变cookie的过期时间
Session

除了cookie外还有一个叫session的机制。session也是可以存储一些信息的。对于一些敏感、重要的信息,我们可以存储到session中。谁也不希望自己的余额、银行卡密码存到cookie当中。 一般有两种存储session的格式

  • 将session数据加密 存在cookie里
  • 通过cookie存一个session_id 下次再请求的时候,根据session_id 查找存在服务器的session数据
  • 过期时间: 
    • session.permanent=True,那么就会默认在31天后过期。
    • app.config[‘PERMANENT_SESSION_LIFETIME’] = 100 (单位:秒)
  • 删除Session
    • session.pop(key)
    • del sessoin[key]
    • session.clear()

这里我们说存在服务器 (session) 的方式 flask 支持各种数据库中 我们最好存在redis里 因为读写速度快 首先安装flask_session

pip install flask_session pip install redis

相关配置:

代码语言:javascript
复制
from flask import Flask, session
import redis
from flask_session import Session

# 初始化Session对象
f_session = Session()

app = Flask(__name__)

app.config['SECRET_KEY'] = 'laowangaigebi'  # 加密的密钥
app.config['SESSION_USE_SIGNER'] = True  # 是否对发送到浏览器上session的cookie值进行加密
app.config['SESSION_TYPE'] = 'redis'  # session类型为redis
app.config['SESSION_KEY_PREFIX'] = 'session_myid'  # 保存到session中的值的前缀
app.config['PERMANENT_SESSION_LIFETIME'] = 7200  # 失效时间 秒
app.config['SESSION_REDIS'] = redis.Redis(host='127.0.0.1', port='6379', db=4)  # redis数据库连接

# 绑定flask的对象
f_session.init_app(app)

异常处理

Flask中,abort() 函数可以立即终止视图函数的执行,并且把相对应的错误信息返回给前端。

代码语言:javascript
复制
from flask import Flask, abort

app = Flask(__name__)


@app.route('/login/<phone>')
def index(phone):
    if phone != '123456':
        abort(502)  # 立即停止视图函数执行,并把异常返回
    return phone


if __name__ == '__main__':
    # 0.0.0.0代表任何能代表这台机器的地址都可以访问
    app.run(host='0.0.0.0', port=5000, debug=True)  # 运行程序

注意abort里面的状态码必须就是HTTP状态码,不能自己随便写

ok!flask 第一阶段到这里就结束了

本文参考博客:https://blog.csdn.net/xiaoyuan511?t=1

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-06-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 建立第一个Flask程序
  • 参数配置
  • 取配置参数
  • 路由
  • 转换器
  • 模板
  • Request
  • Response
  • 异常处理
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档