1

我正在学习如何在 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()
4

1 回答 1

1

哎呀.. 愚蠢的 Python 初学者犯了我的错误。

我是子类flask.views.View化而不是flask.views.MethodView. flask.views.Viewrequires dispatch_request,并且不会自动将 HTTP 请求转发到dispatch_requestMethdoView因此会出现错误。

于 2012-09-11T16:58:52.657 回答