谁能帮助我理解为什么我似乎无法使用烧瓶和 wtf 从我的表单中获取值?



路线

from flask import Flask, render_template, request, flash, redirect
from flask_wtf import FlaskForm
# from flask.ext.sqlalchemy import SQLAlchemy
import logging
from logging import Formatter, FileHandler
from forms import *
import os
@app.route('/wallthickness')
def wallthickness():
form = WallThicknessCalc()
return render_template('forms/wallthickness.html', form = form)

@app.route('/result', methods = ['POST','GET'])
def result():
form = WallThicknessCalc()
diameter = ''
diameter = request.form.get('PipeOD')
if request.method == 'POST':
return render_template ('pages/result.html', form = form, diameter = diameter)

这是表单代码所在的python文件。

from flask_wtf import Form
from wtforms import TextField, PasswordField, FloatField, SubmitField
from wtforms.validators import DataRequired, EqualTo, Length

class WallThicknessCalc(Form):
PipeOD = TextField('Pipe Outer Diameter', 
validators=[DataRequired()]
)
DesignPressure = TextField(
'Design Pressure', validators=[DataRequired()]
)
DesignFactor = TextField(
'Design Factor', validators=[DataRequired()]
)
SMYS = TextField(
'Specified Minimum Yield Stress', validators=[DataRequired()]
)
Calculate = SubmitField(
'Calculate', validators=[DataRequired()]
)

这是带有输入字段的表单。

{% extends 'layouts/main.html' %}
{% block title %}{% endblock %}
{% block content %}
<div class="container-fluid">
<div class="row">
<div class="col-md-6">
<form action="/result" method=[POST] class="form-group">
<fieldset>
<div>
{{ form.PipeOD.label(class="form-control-label") }}
{{ form.PipeOD(class = "form-control form-control-lg")}}
<br>
{{ form.DesignPressure.label(class="form-control-label") }}
{{ form.DesignPressure(class = "form-control form-control-lg")}}
<br>
{{ form.DesignFactor.label(class="form-control-label") }}
{{ form.DesignFactor(class = "form-control form-control-lg")}}
<br>
{{ form.SMYS.label(class="form-control-label") }}          
{{ form.SMYS(class = "form-control form-control-lg")}}
<br>
{{ form.Calculate(class = "form-control form-control-lgbtn btn-primary")}}
</div>
</fieldset>

</form>
</div>

</div>
{% endblock %}

我试图在这里显示结果:

{% extends 'layouts/main.html' %}
{% block title %}{% endblock %}
{% block content %}
<div class="container-fluid">
<div class="row">
<div class="col-md-6">
<h4>The mininmum wall thickness is {{ diameter }} mm</h4>
</div>
</div>
{% endblock %}

我无法检索在表单字段中输入的值。我得到错误TypeErrorTypeError:视图函数未返回有效的响应。函数要么返回None,要么结束时没有返回语句。

CSRF保护可能会让您绊倒。特别是缺乏

{{ form.csrf_token }}

在您的表格中。

此外,您正在对Form进行子类化,这是不赞成使用FlaskForm的,但这是无关的。这也是建议练习做

if form.validate_on_submit():
...

最新更新