from flask import Flask, render_template, request, Response, redirect, session, url_for
app = Flask(__name__)
# app.debug = True # 自动重启功能
app.config.from_object("settings.DevelopmentConfig")
USRS = {
1: {"name": "张三", "age": 18, 'gender': '男'},
2: {"name": "张三", "age": 18, 'gender': '男'},
3: {"name": "张三", "age": 18, 'gender': '男'},
4: {"name": "张三", "age": 18, 'gender': '男'}
}
"""
redirect_to="/", 重定向到另一个页面
subdomain="admin" 子域名
请求相关的全部在request
Django中间件实现装饰器的频繁添加,那么什么是中间件呢?
"""
import functools
# 进行统一的拦截,请求拦截后.视图函数不执行,也可以用装饰器
@app.before_request
def before_req1(*args, **kwargs):
# 如果是login,可以通过白名单
if request.path == '/login':
return None
user = session.get('user_info')
if user:
return None
return redirect("/login")
print("请求之前")
@app.before_request
def before_req2(*args, **kwargs):
# 如果是login,可以通过白名单
if request.path == '/login':
return None
user = session.get('user_info')
if user:
return None
return redirect("/login")
print("请求之前")
# 第一次请求做,其他的时候都不需要,比如:数据库连接池的管理,初始化操作,只是一个标识
@app.before_first_request
def first(*args, **kwargs):
pass
@app.after_request
def process_response1(response):
# 返回值存在
print("process_response1走了")
return response
pass
# 定制错误信息
@app.errorhandler(404)
def error(arg):
return "404错误"
@app.after_request
def process_respons2(response):
# 返回值存在
print("process_response2走了")
return response
pass
@app.route('/detail/<int:nid>', methods=['GET', 'POST']) # 重定向
def detail(nid):
print(nid)
info = USRS.get(nid)
return render_template('detail.html', info=info)
pass
@app.route('/index', methods=['GET', 'POST'])
def index():
return render_template('index.html', user_dict=USRS)
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == "GET":
return render_template('login.html')
else:
# request.query_string
usename = request.form.get('username')
password = request.form.get("password")
if usename == 'alex' and password == "123":
# 记录用户登录
session['user_info'] = usename
return redirect('/index')
return render_template('login.html ', error="用户名或者密码错误")
if __name__ == '__main__':
app.run()
# 装饰器(检验用户认证)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)