计算机系统应用教程网站

网站首页 > 技术文章 正文

【flask】Flask装饰器介绍 class装饰器

btikc 2024-10-12 11:34:03 技术文章 2 ℃ 0 评论

Flask装饰器是Flask框架中用于修改视图函数行为的工具。装饰器本质上是一个接受函数作为参数并返回一个新的函数的函数。在Flask中,装饰器常用于以下场景:

请求限制:你可以使用装饰器来限制某些类型的请求访问特定的视图函数。例如,你可以限制只有POST请求才能访问某个视图函数。

from flask import request, jsonify

def post_required(view_function):

def decorator(*args, **kwargs):

if request.method != 'POST':

return jsonify({"error": "POST method required"}), 405

return view_function(*args, **kwargs)

return decorator

@app.route('/submit', methods=['POST'])

@post_required

def submit():

pass


身份验证和授权:装饰器可用于检查用户是否登录,或者根据用户的权限来执行不同的逻辑。

from flask_login import login_required, current_user

@app.route('/private')

@login_required

def private_page():

return 'You must be logged in to see this page.'


日志记录:装饰器可用于在函数执行前后添加日志记录功能。

import logging

def log_execution(func):

def wrapper(*args, **kwargs):

start_time = time()

result = func(*args, **kwargs)

end_time = time()

logging.debug('Function {} took {} seconds'.format(func.__name__, end_time-start_time))

return result

return wrapper

@app.route('/long-operation')

@log_execution

def long_operation():

# Perform a long-running operation

pass


跨域资源共享(CORS):装饰器可以用来处理跨域请求。

from flask import crossdomain

@crossdomain(origin='http://example.com')

@app.route('/api')

def api():

return 'CORS Enabled'


缓存:装饰器可用于为视图函数的结果添加HTTP缓存头。

from flask import render_template, make_response, cache

@cache.cached(timeout=100)

def expensive_call():

# Perform an expensive operation

pass

@app.route('/expensive')

def expensive():

return expensive_call()


在Flask中使用装饰器的关键在于理解它们是如何改变视图函数的执行流程的。通过将装饰器应用到视图函数上,你可以轻松地添加额外的功能,如日志记录、身份验证、缓存策略等,而无需更改视图函数本身的代码。这使得Flask应用程序更加模块化和易于维护。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表