Python Flask路由 - 如何从MethodView类获取参数

时间:2018-02-14 06:35:35

标签: python flask routing

在我的新工作中,我们正在使用Flask框架(我在Flask中的新手)。每个视图都是MethodView的子视图。代码如下所示:

from flask import render_template
from flask.views import MethodView

class HelloWorldPage(MethodView):
    def get(self):
        return render_template('helloworld.html')


def configure_routing(app):
    app.add_url_rule('/<lang>/helloworld', view_func=HelloWorldPage.as_view('helloworld'))

当然,来自configure_routing(app)的{​​{1}}会在适当的位置调用。现在,我的问题是,是否可以从路线获取helloworld.py?当我写<lang>时,它会抛出异常get(self, lang),当我创建一个名为TypeError: get() takes exactly 2 arguments (1 given)的方法时,它会抛出我没有实现方法get等等。非常感谢你。再见

修改

追溯到helloworld(lang)

get(self, lang)

1 个答案:

答案 0 :(得分:1)

我尝试了相同的

from flask import Flask, render_template
from flask.views import MethodView

app = Flask(__name__)

class HelloWorldPage(MethodView):
        def get(self, lang):
                return render_template('HelloWorld.html', language=lang)

app.add_url_rule('/<lang>/helloworld', view_func=HelloWorldPage.as_view('helloworld'))

if __name__ == '__main__':
        app.run()

以下回复

enter image description here

来自flask.views的评论

  

METHODVIEW:       像常规的基于类的视图,但发送请求       特殊方法。例如,如果您实现了一个名为的方法       :meth:get这意味着它会响应'GET'个请求       ::meth:dispatch_request实现将自动执行       转发您的请求。另外:attr:options已为您设置       自动::

获取(自我)更改为获取(自我,lang)后,您是否克制了服务?

如果您这样做,请检查导入HelloWorldPage视图的应用程序初始化文件,并确保

app = Flask(__name__)

## IMPORT YOUR APP VIEWS 
## THEN CONFIGURE THE ROUTINGS
def configure_routing(app):
    app.add_url_rule('/<lang>/helloworld', view_func=HelloWorldPage.as_view('helloworld'))