flask基础二
Posted yb635238477
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flask基础二相关的知识,希望对你有一定的参考价值。
昨日内容回顾:
Flask 短小精悍
稳定性相对较差
Django 大而全
造成一定的资源浪费
Flask
1.路由
@app.route("/",methods=("GET","POST"))
2.视图函数
@app.route("/",methods=("GET","POST"))
def index():
return "123"
3.返回值:
1.Response "yinwangba"
2.from flask import render_template
render_template return render_template("index.html") # 默认情况下模板存放在 templates
3.from flask import redirect
return redirect("/login")
4.request(全局变量,独有机制--Flask请求上下文管理)
存储数据:
request.args.get("name") url中取值
request.form.get("name") formdata取值
request.json # content-Type: app/json
request.data # content-Type: xiaowanba
request.values # 禁用
属性数据:
request.method
request.url
request.path "/login"
5.Jinja2
{{ 非逻辑的 引用变量 执行函数 被夹杂在for if }}
{% 逻辑代码 %}
macro 宏指令
6.Session
app.secret_key = "加密字符串"
session["user"] = "username"
加密session之后存放在cookies,
请求到来带上cookie 将session反序列化后拿到数值
今日内容:
1.装饰器基于session访问控制
endpoint可以解决视图函数重名的情况
昨天在访问视图函数的时候,我们加上了session的认证,
这个认证的功能是如果用户没有session,就说明用户没有登录,需要先让他登录才能让他访问。
但是如果我们有很多个视图函数,上面那两行代码就要写很多遍,这样就很麻烦。所以我们再写一个装饰器,这个装饰器用来专门坐验证。
装饰器写完了,那应该放在视图函数的哪呢?
这样装饰了一个视图函数可以,但是把这个装饰器同样装饰在了另一个函数上,就会报错,
这是因为同一个装饰器装饰在不同的视图函数时,重名了。
这时候需要这样一个参数endpoint,相当于给这个视图函数起了一个名字,
2.flask中的路由
那么flask中的路由是怎么动态传参的呢?
然后在访问的时候:
这样就传参成功了。
当然,也可以传一些其他的参数。
如果这样传了参数,就制定了传的参数就必须是int型,
之前还有一种路由的方式:app.add_url_rule("/",viewfunc=viewfunc),这种路由的参数和上面的路由的参数完全一样。
3.flask中的配置
1.Flask实例的配置 app配置
app.config["DEBUG"] = True
app.config.from_object(obj)
class obj():
DEBUG = True
SECERT_KEY = "123123"
2.初始化Flask实例时的配置
Flask(__name__)
1.static_url_path = "/static_folder" 访问静态目录文件时的地址 默认值是等于static_folder的名字
2.static_folder = "static" 静态文件的存放路径
3.template_folder=‘templates‘ 模板路径
4.Flask 中蓝图 插拔机制
我们新建一个文件夹serv,在这个文件夹下新建一个py文件,起名为add_stu.py
这样一个蓝图构造完了之后,要记得在项目中注册,即在s1.py中注册:
5.before_request after_request errorheadler(404)
之前我们给视图函数加了一个认证的装饰器,
但是如果有很多视图函数,每个视图函数都要加上这么一句,显得麻烦。
接下来介绍一个before_request,
before_request:再请求进入视图函数之前作出处理
把认证的装饰器这样改了之后,就不需要在视图函数中写了,所有的请求在视图函数之前会走这个认证。
如果有多个before_request,会按照顺序执行。
打印结果:
先打印get_session1,在打印get_session2
然后就是after_request
after_request :在请求结束视图函数之后,返回客户端之前
打印结果:
先打印after2,在打印after1.
然后是errorheadler()。
我们可以自己写
以上是关于flask基础二的主要内容,如果未能解决你的问题,请参考以下文章