如何在Flask-Classy中发布非def post(self)函数?

时间:2016-12-25 16:46:28

标签: python flask

圣诞快乐。

我不确定这是否可行。如果我有一个视图索引,并且我在视图模板上有2个表单,我怎样才能将它们直接转换为不同的函数?

我的视图代码(作为一个简单示例)如下:

def deletex(input):
   … 

class AdminView(FlaskView):

    @route('/')
    def index(self):
    return render_template(‘admin-home.html’)

    def delete_x(self, methods=['POST']):
        x = request.form['gid']
        deletex(x)

        flash(“All’s good")
        return redirect(url_for(index))

相当简单的例子。 admin-home.html上的表单包含此内容......

<form action=“{{ url_for(‘AdminView:delete_x’) }}” method=“post”>
...

当我这样做时,它返回405错误。我可以通过GET将表单提交给delete_x并允许GET作为一种方法,但是我找不到一种方法来发布一个不是def post(self): …的烧瓶级别的视图

我该怎么做?可能吗?我宁愿在一个视图中没有两种形式的逻辑。

1 个答案:

答案 0 :(得分:0)

错误是因为我将methods=['POST']置于错误的位置。我在函数声明而不是路径装饰器中进行了实验。

我的班级定义是:

@route('deletex', methods=['POST'])
def deletex(self):
    pass

然后我的HTML表单是:

<form action="{{ url_for("AdminView:deletex") }}" method="post">