Flask框架之类视图中使用装饰器

类视图中使用装饰器

简言之,python装饰器就是用于拓展【原来函数功能】的一种函数,这个【函数的特殊之处在于它的返回值也是一个函数。

使用python装饰器的 【好处】就是在不用更改原函数的代码前提下给函数增加新的功能。


在视图函数中使用

在视图函数中使用自定义装饰器,那么自己定义的装饰器必须放在app.route下面。否则这个装饰器就起不到任何作用。

需求:
查看设置个人信息时,只有检测到用户已经登录了才能查看,若没有登录,则无法查看并给出提示信息。

定义一个装饰器


def login_requierd(func):
	#为保证参数的安全,可以加上@wraps装饰器
	#需要从functools中导入wraps
    @wraps(func)
    def wrapper(*args,**kwargs):
        username = request.args.get("username")
        if username and username =='wukong':
             return func(*args,**kwargs)
        else:
            return  '请先登录'
    return wrapper
    

使用自定义装饰器


@app.route('/settings/')
@login_requierd
def settings():
    return '这是设置界面'
    

在类视图中使用

在类视图中使用装饰器,需要重写类视图的一个类属性decorators,这个类属性是一个列表或者元组都可以,里面装的就是所有的装饰器。

需求:
查看设置个人信息时,只有检测到用户已经登录了才能查看,若没有登录,则无法查看并给出提示信息。

定义一个装饰器


def login_requierd(func):
	#为保证参数的安全,可以加上@wraps装饰器
	#需要从functools中导入wraps
    @wraps(func)
    def wrapper(*args,**kwargs):
        username = request.args.get("username")
        if username and username =='wukong':
             return func(*args,**kwargs)
        else:
            return  '请先登录'
    return wrapper
 

使用自定义装饰器:


class  ProfileView(views.View):
    decorators = [login_requierd]
    def dispatch_request(self):
        return '这是个人中心界面'

app.add_url_rule('/profile/',view_func=ProfileView.as_view('profile'))
    
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Python Flask框架,可以使用cookie来存储和获取用户的信息。cookie是一种在用户计算机上存储数据的小文件,可以在用户访问网站时被读取和写入。在Flask,可以使用request和response对象来操作cookie。 要设置cookie,可以使用response对象的set_cookie方法。例如,下面的代码将一个名为“username”的cookie设置为“John”: ``` from flask import Flask, make_response app = Flask(__name__) @app.route('/') def index(): resp = make_response('Hello, World!') resp.set_cookie('username', 'John') return resp ``` 要获取cookie,可以使用request对象的cookies属性。例如,下面的代码将获取名为“username”的cookie的值: ``` from flask import Flask, request app = Flask(__name__) @app.route('/') def index(): username = request.cookies.get('username') return 'Hello, {}!'.format(username) ``` 需要注意的是,cookie存储的数据可以被用户修改或删除,因此不应该将敏感信息存储在cookie。另外,cookie的大小也有限制,通常不应该超过4KB。 ### 回答2: Python Flask框架的cookie是一种客户端数据存储机制,可以存储在用户浏览器,以便在后续用户访问网站时读取和使用它们。使用Flask,我们可以轻松创建和操作cookie。常用的cookie操作包括设置、获取和删除cookie,以及设置cookie的过期时间。 Flask使用cookie的步骤如下所示: 1. 导入Flask的request和response模块。 2. 在视图函数,通过request.cookies属性获取所有cookie对象。 3. 使用response.set_cookie()方法设置cookie。 4. 使用response.delete_cookie()方法删除cookie。 要设置cookie,我们需要提供参数名称,值和过期时间等信息。 语法:response.set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=False, httponly=False) 1. key:cookie的名称。 2. value:cookie的值。 3. max_age:cookie的过期时间,以秒为单位。 4. expires:cookie过期的datetime对象。 5. path:cookie的可见路径。 6. domain:cookie的域名。 7. secure:如果是True,则只有通过HTTPS连接的请求才能获取cookie。 8. httponly:如果是True,则cookie不能通过javascript来获取,这可以防止跨站点脚本攻击。 要获取cookie,我们只需要调用request.cookies.get()方法,并传入cookie的名称即可。 要删除cookie,我们可以使用response.delete_cookie()方法。删除cookie时,我们需要提供cookie的名称和其他可选参数,如cookie的域名,路径等等。 总之,cookie是一种简单且有用的客户端数据存储机制,Flask框架的处理cookie提供了很多便利性的方法,使得在开发web应用时可以轻松使用cookie实现用户记录和数据传递等功能。 ### 回答3: Python Flask框架是一个轻量级的web框架,它提供了一个灵活的方式来开发web应用程序。Flask框架通过使用Cookie会话管理,可以帮助我们在Web应用程序实现状态管理。 Cookie是一个小型的文本文件,存储在客户端的浏览器,用于识别用户。当客户端向服务器发送请求时,浏览器通过使用Cookie将识别码发送到服务器。在Flask,我们可以通过使用session对象来访问Cookie数据。 在Flask,我们可以使用session对象来设置和获取Cookie值。使用session对象可以在服务器端存储用户信息,并在下次用户访问时再次获取。session对象是一个字典型,可以存储任意的Python对象。在Flask应用程序,我们可以通过如下的方式使用session对象: # 导入Flask和session库 from flask import Flask, session # 实例化Flask app = Flask(__name__) # 设置session密钥 app.secret_key = 'your_secret_key' # 定义路由 @app.route('/') def index(): # 将数据存储在session对象 session['username'] = 'John Doe' return 'Session created!' @app.route('/getsession') def getsession(): # 从session对象获取数据 username = session.get('username') return 'The username is ' + str(username) if __name__ == '__main__': app.run() 在这个示例,我们在app对象定义了一个密钥app.secret_key,这个密钥用于加密我们的Cookie会话数据。然后,我们在index()函数将数据存储在session对象使用session['username'] = 'John Doe'。在getsession()函数,我们通过使用session.get('username')来获取存储在session对象的用户名。 总而言之,使用Flask框架的session对象可以帮助我们在web应用程序实现状态管理,通过存储和获取Cookie数据实现用户信息的跨页传递。利用Flask的session对象可以更加灵活地开发web应用程序,提高用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值