在java中,我们通常会加一个filter进行过滤拦截,然后通过对request和response的处理,从而针对一些不同的请求场景做处理,比如手机访问pc站,需要拦截跳转的m站去。
在Python flask中,我们用装饰器( decorator)来进行拦截处理。
import re
from functools import wraps
from flask import request, redirect
# func是使用该修饰符的地方是视图函数
# 拦截手机站点 跳转手机页面
# mFunc 用来自定义m站跳转链接 pcFunc同理
def pagefilter(pc=True, mFunc=None, pFunc=None):
def decorator(func):
@wraps(func)
def _decorator(*args, **kwargs):
pcRedirectUrl = pFunc(*args, **kwargs) if pFunc != None else '/'
mRedirectUrl = mFunc(*args, **kwargs) if mFunc != None else '/m'
if checkMobile(request):
# 如果没有就重定向到登录页面
if pc:
return redirect(mRedirectU