python - 小学生使用 Flask Forms 时出错?

标签 python flask

我正在尝试使用 Flask WTF 构建一个 GUI。我按照网上的视频并完全复制了代码。但是当我导航到http://127.0.0.1:5000/form时我得到:

“ValueError:查看函数未返回响应”

...加上以下回溯。

  • 文件“C:\Users\jpetrie\AppData\Local\Programs\Python\Python35\lib\site-packages\flask\app.py”,第 1997 行,调用
  • 返回 self.wsgi_app(environ, start_response)

  • 文件“C:\Users\jpetrie\AppData\Local\Programs\Python\Python35\lib\site-packages\flask\app.py”,第 1985 行,wsgi_app

  • 响应 = self.handle_exception(e)

  • 文件“C:\Users\jpetrie\AppData\Local\Programs\Python\Python35\lib\site-packages\flask\app.py”,第 1540 行,handle_exception

  • 重新加注(exc_type, exc_value, tb)

  • 文件“C:\Users\jpetrie\AppData\Local\Programs\Python\Python35\lib\site-packages\flask_compat.py”,第 33 行,重新引发

  • 提高值(value)

  • 文件“C:\Users\jpetrie\AppData\Local\Programs\Python\Python35\lib\site-packages\flask\app.py”,第 1982 行,位于 wsgi_app

  • response = self.full_dispatch_request()

  • 文件“C:\Users\jpetrie\AppData\Local\Programs\Python\Python35\lib\site-packages\flask\app.py”,第 1615 行,full_dispatch_request

  • 返回 self.finalize_request(rv)

  • 文件“C:\Users\jpetrie\AppData\Local\Programs\Python\Python35\lib\site-packages\flask\app.py”,第 1630 行,finalize_request

  • response = self.make_response(rv)

  • 文件“C:\Users\jpetrie\AppData\Local\Programs\Python\Python35\lib\site-packages\flask\app.py”,第 1725 行,make_response

  • 引发 ValueError('查看函数未返回响应')

自从我检查脚本与视频相同(很多次)以来,我不认为这是代码。所有导入的软件包均已安装。

我认为这是一个小学生的错误,与我的设置方式有关。我不知道出了什么问题。请问有人可以帮我吗?我第一次使用atom作为文本编辑器(我曾经使用IDLE)。我没有使用 virtualenv 或任何东西。 (这会是一个问题吗?).py 和 .html 文件位于同一个本地文件夹中。

from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField

app = Flask(__name__)
app.config['SECRET_KEY'] = 'Thisisasecret!'

class LoginForm(FlaskForm):
  username = StringField('username')
  password = PasswordField('password')

@app.route('/form', methods=['GET', 'POST'])
def form():
  form = LoginForm()
  if form.validate_on_submit():
  return render_template('form.html', form=form)

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

...这是 html:

<html>
<head>
<title>Form!</title>
</head>
  <body>
    <h1>Our form will be here OMG!</h1>
    <form method="POST" action="{{ url_for('form') }}">
        {{ form.csrf_token }}
        {{ form.username }}
        {{ form.password }}
    </form>
    </body>

编辑 - 鉴于报告的错误(或似乎)完全不同,我很难看出这是一个重复的问题并且值得否决。我查看了“重复”,对我来说它看起来不像我的问题。这不是一个“懒惰”的帖子。我花了很长时间试图弄清楚这一点,并且我也寻找类似的问题。 #严厉

最佳答案

您的 form() 方法并非在所有情况下都返回模板。您有 If 语句,仅在特定情况下返回 form.html。使该函数在所有场景下都返回 View 。并在嵌套 if 语句之前用 4 个空格格式化代码:

if not form.validate_on_submit():
   return render_template('form.html', form=form)

return render_template('home.html')

关于python - 小学生使用 Flask Forms 时出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48596059/

相关文章:

python - Flask + SQLAlchemy 结果转为 JSON

python - Flask WTF (Python) 字段列表的大小变化列表不起作用(未绑定(bind)错误)

Javascript 客户端不会持续监听 Flask-SocketIO

python - 如何修复在 Windows 10 中安装 Flask-mysqldb 模块

python - Flask-用户注册 : add one more mail id

python - 将 CSV 记录解析为类列表

python - 如何让我的 matplotlib 图超出坐标轴?

python - SQLAlchemy - 处理约束失败

python - 从 seaborn swarmplot 获取标绘点的跨度

python-2.7 - 使用谷歌计算引擎运行 flask 应用程序