ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

day02 flask config,路由,Blueprint,Flask特殊装饰器

2020-07-14 20:04:10  阅读:286  来源: 互联网

标签:Blueprint flask day02 app request 视图 Flask session url


回顾:
1.启动Flask
from flask import Flask
app = Flask(__name__)
app.run("0.0.0.0",9527) # 监听 绑定 ?


2.Flask 的 Response
1.HTTPResponse 返回字符串 ""
2.render_template 渲染返回模板文件
3.redirect 重定向
# Flask 特殊封装
4.send_file 打开返回文件内容 Content-Type:文件类型 自动识别的文件类型
5.jsonify 返回标准的JSON格式字符串 Content-Type:application/json

3.Flask 的 Request
1.Request 导入 - 请求上下文
2.Request.method 请求方式 HTTP 8 种 POST DELETE PUT GET OPTIONS请求跨域
3.Request.path url_root 路由地址
4.Request.host 获取访问主机地址

# 方法:
request.form FormData中的数据 to_dict() 直接返回字典数据
request.args URL中的数据
request.data 请求体的原始信息 只有在 Content-Type 没有 Form b""
request.json 请求头中的 Content-Type:application/json 字典
request.headers 请求头中的信息
request.cookies 请求中Cookie的信息

# 坑:
request.values 不可触及的地带

4.Flask 中的 Session
from flask import session
使用session的前提是在 application 中加入 secret_key
app.secret_key = "$%^&*($#$%^&*^YH&U"

def get_session():
session["user"] = 123

交由客户端保管机制
1.开启Session - session["user"] = 123
2.session 序列化字符串
3.通过 secret_key 进行加密
4.通过 Cookie 返回客户端

接收Session
1.通过 Cookie 获取 session
2.通过 secret_key 解密
3.反序列化 字典
4.session

2019年9月25日:
增加装饰器 实现验证登录

1.Flask 中路由
*1.endpoint 不能重复 对应视图函数 默认是视图函数名
视图函数与路由对应关系 url_for 反向创建url

*2.methods 允许请求的方式 ["GET","POST","DELETE","PUT"]

3.redirect_to 永久重定向 没有进入视图直接跳转 redirect_to="/new_look"
4.strict_slashes=False 是否严格要求 路由匹配规则 "/last/"
5.defaults={"nid":"22"} 默认参数 def 视图函数中(nid)一定要接受参数

**动态参数路由 /look/<int:page>_<int:row>_<int:row_2>
应用场景 利用Send_file限定返回文件

2.Flask 初始化实例化参数
*static_folder 静态文件存放路径
*static_url_path 静态文件访问路径 默认值为 "/{static_folder}"
*template_folder 模板存放路径
static_host 静态文件访问服务HOST -> 指向到另外一台服务器


3.Flask 对象配置 简单
app.default_config 默认配置

DEBUG 模式 开启编辑时代码重启 Log打印级别最低 错误信息透传
TESTING 模式 无限接近生产环境 代码编辑不会重启 Log级别较高 错误信息不再透传
SESSION_COOKIE_NAME 存放在浏览器cookie中session的名称
app.config["SESSION_COOKIE_NAME"] = "I am Not Session" 第一个字符,绝对不能是 空格

Flask Config 快速配置

class DebugConfig:
DEBUG = True
SECRET_KEY = "%^&*(%^&*"
PERMANENT_SESSION_LIFETIME = 3600
SESSION_COOKIE_NAME = "I am Not Session"
OLD = "OLD"
BOY = "BOY"
EDU = "EDU"
PYTHON = "PYTHON"
FLASK = "FLASK"

app.config.from_object(DebugConfig)

config = {k:v}
config[k1] = v1
{k:v,k1:v1}


4.Flask 中的 蓝图 Blueprint
Django app01
蓝图作用 功能隔离 路由隔离

from flask import Blueprint
# Blueprint 当做一个不能够run的Flask 实例
user = Blueprint(name="app02user",__name__,url_prefix="/shopping") # url_prefix
@user.route("/login")
def login():
return "I am app02 userBP login func"

在Flask实例中增加注册蓝图
app.regiest_blueprint(蓝图-user)

name="app02user" 蓝图名称 不能重复 保证在app中是唯一的
url_prefix="/shopping" URL前缀 用于隔离相同URL


5.Flask特殊装饰器
@app.before_request 请求进入视图函数之前
@app.after_request 请求结束,返回影响客户端之前

正常 be1 - be2 - be3 - vf - af3 - af2 - af1
异常 be1 - be2 - af3 - af2 - af1

@app.errorhandler(4xx or 5xx) 重定义错误信息
@app.errorhandler(404)
def error404(ErrorMessage):
print(ErrorMessage)
return redirect("https://www.autohome.com.cn/beijing/asdfe32r24rff23r23r")
# return send_file("image/1.jpg")

标签:Blueprint,flask,day02,app,request,视图,Flask,session,url
来源: https://www.cnblogs.com/duhong0520/p/13301205.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有