gpt4 book ai didi

python - 如何检查 Python 类中的请求方法?

转载 作者:太空狗 更新时间:2023-10-30 01:53:59 25 4
gpt4 key购买 nike

我有一个 Flask 类:

class Likes(object):
def __init__(self, model, table_id):
self.model = model
self.table_id = table_id

if request.form["likes"] == 'like':
query = self.model.query.filter_by(id=table_id).first()
query.likes += 1
db.session.commit()
flash(u'Like =)) ' + query.title, 'info')
elif request.form["likes"] == 'dislike':
query = self.model.query.filter_by(id=table_id).first()
query.likes -= 1
db.session.commit()
flash(u"Don't like =(" + query.title, 'info')

每次用户发送 POST 请求时我都想调用这个类,但是每次我创建我的类的实例时我都需要添加检查请求类型:

# ...
if request.method == 'POST':
Likes(Post, request.form["post_id"])
# ...

我怎样才能改进我的类(class)并在其中添加这个检查:

if request.method == 'POST':
# ...

解决方案:使用装饰器@app.before_request

@app.before_request
def before_req():
if request.method == 'POST':
flash(u'Before request', 'success')

最佳答案

您可以使用 Flask.request_started 信号在每次请求到达时运行一些东西,然后执行您需要的代码。

flask.request_started

This signal is sent before any request processing started but when the request context was set up. Because the request context is already bound, the subscriber can access the request with the standard global proxies such as request.

看看 Flask's Signals chapter了解更多。

在你的代码中使用类似的东西:

def create_like(sender, **extra):
if request.method == 'POST':
Likes(Post, request.form["post_id"])


from flask import request_started
request_started.connect(create_like, app)

这改编自 documentation of Core Signals 的示例.

关于python - 如何检查 Python 类中的请求方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32496906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com