app.secret_key = "yinjiaodawangba"
Flask中的session是保存在 cookie 中的
cookies 中 session 存储的是通过 secret_key 加密后的 key , 通过这个 key 从flask程序的内存中找到用户对应的session信息
session 进行验证:
from flask import Flask, render_template, redirect,send_file,url_for,jsonify,request,session
app = Flask(__name__,static_folder="haha",static_url_path="/statics")
app.secret_key="hahaha"
@app.route("/")
def index1():
if session.get('tian') == "tiantian":
return redirect(url_for('index2'))
else:
return redirect("/login")
@app.route("/login",methods=['GET',"POST"])
def login():
if request.method == "GET":
return render_template("login.html")
else:
dic=request.form.to_dict()
user=dic.get('user',0)
pwd=dic.get('pwd',0)
if user=='tian' and pwd =="123":
session['tian']="tiantian"
return redirect(url_for('index2'))
else:
return render_template("login.html",msg="账号或密码错误")
app.run(debug=True)
心得:学完django和rest-framework之后,再来学习flask框架,感觉似曾相识,很多类似的地方,加油,加油~一、介绍Django web:优点:大而全,ORM models ,model Form ,admin ,csrf ,session缺点:资源浪费Flask web:优点:小而精,ORM:x , Form:x , admin:x,csrf:x,session:√,...
def hello(name):
return render_template(“hello.html”, name=name)
render_template函数第一个参数对应的是模板的文件名,后面的参数为向模板中传递的参数值。
Flask在程序文件夹中的templates子文件夹中根据模板文件名来寻找对应的模板。
所以需要在templates子文件夹下定义一个hello.html文件。
代码如下:
一、jinja2简单介绍
Jinja2是Python里一个被广泛应用的模版引擎,他的设计思想来源于Django的模板引擎,并扩展了其语法和一系列强大的功能。其中最显著的一个是增加了沙箱执行功能和可选的自动转义功能,这对大多应用的安全性来说是非常重要的。
他基于unicode并能在python2.4之后的版本运行,包括python3。
二、Django和Flask的比较
Dj...
1.Flask 安装 + 启动
from flask import Flask
app = Flask(__name__) # 实例化flask对象 # __name__ 多app应用,分区实例在哪个文件中
app.run()
高级启动:
from flask import Flask
app = Flask(__n...
response=make_response()#创建一个response
response.data=json,dumps({"id":"001","pwd":"123456"})#返回数据
response.headers['uu']='test'#添加headers属
最近一前端的小伙给我说,他想让所有模板使用同一个变量,每个模板对其值做了修改,其他模板拿到的变量也得到相应的改变,说白了就是jinja2操作全局变量,这个可以使用cookie来实现,但是他不想做相应的js操作,然后问我有什么办法吗?
我考虑之后想到jinja2可以设置全局函数,可以让全局函数来操作变量,实现代码如下。目录结构如下globaltest.py#coding:utf-8
from fla
1.介绍Jinja2是python的一种模板语言,以Django的模板语言为原本,和Django的模板语言有很多相似之处,同时Jinja本身也是一种系统的、完整的Python模板语言。2.为什么需要模板语言在html中写for if或者其他流程控制语句?
在html中使用include、extend等方法复用html?
…考虑到我们用Python做web开发的情况,首先我们既想后台业务逻辑的代码
1. 什么是Jinja2模板引擎
python的Web开发中, 业务逻辑(实质就是视图函数的内容)和页面逻辑(html文件)分开的, 使得代码的可读性增强, 代码容易理解和维护;
模板渲染: 在html文件中,通过动态赋值,将重新翻译好的html文件(模板引擎生效) 返回给用户的过程。
2. 语法
2.1 Jinja2变量显示语法: {{ 变量名 }}
# 完整的过滤器查看位置: http:...
Flask学习之请求钩子、cookie和session、Jinja2...请求钩子(类似于django的中间件)状态保持cookie设置和获取设置cookie获取cookie删除cookiesession的设置和获取利用系统方法创建一个secret_key设置session和跳转到获取session页session的过期时间
请求钩子(类似于django的中间件)
before_first_re...
我们知道,Flask 使用 Jinja 2 作为模板引擎,我们也可以自由使用其它的模板引擎,但运行 Flask 本身仍然需要 Jinja2 依赖 ,这对启用富扩展是必要的,扩展可以依赖 Jinja2 存在。
我们接下来就来看下Jinja2模板引擎的默认配置:
所有扩展名为 .html 、 .htm 、 .xml 以及 .xhtml 的模板会开启自动转义
模板可以利用 {% autoescap...
from flask import render_template,render_template_string
render_template
return render_template('index.html') #将index.html页面的内容读取出来并进行响应
要在Flask中设置session,您需要使用Flask提供的session对象。您可以使用以下代码来创建一个session并将其存储在response中:
```python
from flask import Flask, session, make_response
app = Flask(__name__)
app.secret_key = 'your_secret_key'
@app.route('/')
def index():
session['key'] = 'value'
response = make_response('Session set')
return response
在这个例子中,我们首先导入了Flask、session和make_response。然后我们创建了一个Flask应用,并设置了一个密钥来加密session数据。在路由函数中,我们通过session对象设置了一个键值对。最后,我们使用make_response将响应对象创建并返回给客户端。
请注意,为了使用session,您需要设置一个密钥来加密session数据。如果没有设置密钥,Flask会抛出一个错误。