我正在学习如何在Flask中使用Pluggable Views,因为似乎每个人都总是使用它们来获得它们的优势。我有以下文件,它返回“未实现的错误”。我假设这是因为我没有实施dispatch_request
。但是,根据Flask的文档,当使用MethodView时:“...如果你实现一个名为get()的方法,这意味着你将响应'GET'请求,dispatch_request()实现将自动转发你的请求。”意思是,我不需要dispatch_request
。
from flask import Flask, render_template, request, redirect, url_for, flash
from flask.views import View, MethodView
import os
SECRET_KEY = 'some_secret_key'
DEBUG = TRUE
app = Flask(__name__)
app.config.from_object(__name__)
class Main(View):
def dispatch_request(self):
return "Hello World!"
class Template(View):
def get(self):
return render_template('index.html')
def post(self):
result = eval(request.form['expression'])
flash(result)
return self.get()
app.add_url_rule('/', view_func=Main.as_view('main'))
app.add_url_rule('/template', view_func=Template.as_view('template'), methods=['GET', 'POST'])
if __name__ == "__main__":
app.run()
答案 0 :(得分:1)
哎呀......愚蠢的Python初学者错了我。
我是flask.views.View
的子类,而不是flask.views.MethodView
。 flask.views.View
需要dispatch_request
,并且不会像dispatch_request
那样自动将HTTP请求转发到MethdoView
,因此会出错。