在我的新工作中,我们正在使用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)
答案 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()
以下回复
来自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'))