1. @route
@route 装饰器用于将视图函数与指定的 URL 路由关联起来。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return 'Hello, World!'
2. @methods
@methods 装饰器用于指定视图函数接受的 HTTP 方法。
from flask import Flask
app = Flask(__name__)
@app.route('/submit', methods=['POST'])
def submit_form():
return 'Form submitted successfully!'
3. @template
@template 装饰器用于指定渲染的模板。
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/dashboard')
@template('dashboard.html')
def dashboard():
data = get_dashboard_data()
return {'data': data}
4. @before_request 和 @after_request
@before_request 装饰器用于在每个请求之前执行一些逻辑,例如身份验证检查。
from flask import Flask, g
app = Flask(__name__)
@app.before_request
def before_request():
g.user = get_authenticated_user()
@after_request 装饰器用于在每个请求之后执行一些逻辑,例如添加响应头。
from flask import Flask
app = Flask(__name__)
@app.after_request
def after_request(response):
response.headers['X-Frame-Options'] = 'DENY'
return response
5. @errorhandler
@errorhandler 装饰器用于处理指定 HTTP 错误码的错误。
from flask import Flask, render_template
app = Flask(__name__)
@app.errorhandler(404)
def page_not_found(error):
return render_template('404.html'), 404
6. 自定义装饰器
你还可以自定义装饰器,用于执行特定的逻辑。例如,下面是一个简单的性能日志装饰器:
from flask import Flask
import time
app = Flask(__name__)
def log_execution_time(func):
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f'{func.__name__} executed in {end_time - start_time:.4f} seconds')
return result
return wrapper
@app.route('/')
@log_execution_time
def home():
return 'Hello, World!'
这只是一些 Flask 视图装饰器的示例。你可以根据需要使用这些装饰器或创建自定义装饰器,以更好地组织和处理你的视图函数逻辑。
转载请注明出处:http://www.zyzy.cn/article/detail/7325/Flask