11content_processor
2024-09-08 01:58:33
1,content_processor
- 上下文处理器应该返回一个字典,字典中的
key
会被模板中当成变量来渲染 - 上下文处理器返回的字典,在所有页面中都是可以使用的
- 被这个装饰器修饰的钩子函数,必须要返回一个字典,即使为空也要返回
登陆的时候才会显示用户名。
from flask import Flask,render_template,g,url_for,request,redirect,session
import os
app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24) @app.route('/')
def hello_world():
# print("index")
return 'index!' @app.route('/login/' ,methods=['GET','POST'])
def login():
# print("login")
if request.method == "GET":
return render_template('login.html')
else:
username = request.form.get('username')
password = request.form.get('password')
if username == "1" and password == "1":
session['username'] = "1"
return 'Success to login in!'
else:
return redirect(url_for('login')) @app.route('/edit/')
def edit():
##1和 #2都是一样的意思,但是1更方便,hasattr() 函数用于判断对象是否包含对应的属性。
if hasattr(g,'username'): #1
# if session.get('username') == "1": #2
return render_template('edit.html')
else:
return redirect(url_for('login')) # before_request:在请求之前执行的,在视图函数执行之前执行的。
# before_request只是一个装饰器,他可把要设置为钩子函数的代码放到视图函数执行之前来执行。
@app.before_request
def my_before_request():
print('hw')
# 有username证明用户是登陆状态
if session.get('username'):
g.username = session.get('username') #g?
# 相当于在每一个视图函数(如‘/’,/login/执行前都会执行这个函数。) @app.context_processor
def mycp():
return {"username":"1"}
if __name__ == '__main__':
app.run()
最新文章
- 可用的rtmp互联网地址
- 利用CSS3实现圆角的outline效果的教程
- 一张图读懂https加密协议
- 在excel 中某一单元格添加指定字符的示例
- Wordpress添加关键词和描述
- C++学习17派生类的构造函数
- JSP动作学习一
- 结构体struct和typedef后面接指针的含义
- C# 操作mongodb 分组
- Android实用代码七段(一)
- ORACLE模拟临时文件、日志成员、口令文件丢失情况与恢复【weber出品】
- linux shell 推断文件或目录是否真的存在
- castle之动态代理
- 数字(Number)类型(一)
- The first day in cnblogs
- GitHub for Windows客户端使用操作流程
- Eclipse的设置、调优、使用(解决启动卡顿等问题)----转
- as2 删除层级影片问题
- npm run dev 自动打开浏览器
- wpf 用户自定义事件传参