在Python Flask中如何使用before_action ... only?

2024-10-01 15:40:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要把一个ruby代码改成python,而且我对这个也不熟悉。有人能告诉我有没有什么功能像在行动之前。。。只有:在Python瓶里? 这是我要更改的函数:

class IftttController < ActionController::Base
  before_action :return_errors_unless_valid_service_key
  before_action :return_errors_unless_valid_action_fields, only: :create_new_thing

def return_errors_unless_valid_service_key
      unless request.headers["HTTP_IFTTT_SERVICE_KEY"] == IFTTT_SERVICE_KEY
        return render plain: { errors: [ { message: "401" } ] }.to_json, status: 401
      end
    end

    def return_errors_unless_valid_action_fields
      if params[:actionFields] && params[:actionFields][:invalid] == "true"
        return render plain: { errors: [ { status: "SKIP", message: "400" } ] }.to_json, status: 400
      end
    end
end

我在网上读到@应用程序请求前等于它,但我不知道如何将它用于特定的操作(在操作之前:返回错误,除非有效的操作字段,只有::创建新的东西),就像在ruby on rails上一样,这是我的代码,我不知道它是否正确:

@ifttt.before_request
def return_errors_unless_valid_action_fields():
    if request.args.get("actionFields") and request.args["actionFields"]["invalid"] == True:
        return render_template_string(jsonify(errors = [{status= "SKIP", message = "400"}]), 400

有人能帮我吗?非常感谢你。你知道吗


Tags: messagefieldsreturnrequestdefstatusactionrender
1条回答
网友
1楼 · 发布于 2024-10-01 15:40:27

Flask应用程序有几个钩子,允许用户在请求之前或之后运行函数:

app = Flask(...)

@app.before_request
def i_have_been_called():
    print('I have been called')

这应该在每次请求之前将“我已被调用”输出到控制台。你知道吗

烧瓶中内置的其他挂钩包括before_requestbefore_first_requestafter_requestteardown_appcontext等等。你知道吗

至于only:参数,烧瓶中没有这样的东西。只需编写函数即可检查此类情况:

@app.before_request
def i_prefer_post():
    from flask import request
    if request.method == 'POST':
        print('I prefer POST')

相关问题 更多 >

    热门问题