【问题标题】:before_action ... only: how to do this in python flask? [closed]before_action ...仅限:如何在python烧瓶中执行此操作? [关闭]
【发布时间】:2019-03-16 05:50:07
【问题描述】:

我需要将一个 ruby​​ 代码更改为 python,我对此也很陌生。有人能告诉我有没有像 before_action 这样的功能......仅限:在 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

正如我在互联网上看到的那样,@app.before_request 等于它,但我不知道如何将它用于特定操作(before_action :return_errors_unless_valid_action_fields,仅::create_new_thing),就像在 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

谁能帮帮我?非常感谢。

【问题讨论】:

  • 要在此处获得问题的答案,您可能需要提供更多详细信息。也许“before_action”是我一无所知的红宝石主义,但作为一名 Python 程序员,你的问题完全没有让我继续下去。您能否提供一些代码(您尝试转换的 Ruby 代码的相关部分以及您迄今为止编写的 Python 代码?
  • 我现在放了一些代码

标签: python flask


【解决方案1】:

Flask 应用程序有一些钩子可以让用户在请求之前或之后运行函数:

app = Flask(...)

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

这应该在每次请求之前向控制台输出“我已被调用”。

Flask 内置的其他钩子包括before_requestbefore_first_requestafter_requestteardown_appcontext 等等。

至于only: 参数,Flask 中没有这样的东西。您必须简单地编写函数来检查这种情况:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多