【发布时间】:2018-02-08 08:55:20
【问题描述】:
我的用例如下:
在主页/索引页面中,要求用户输入他迄今为止工作过的公司数量。根据他提供的号码,他将被重定向到另一种形式,他必须提供所有这些公司的名称和位置。
下面是我的代码库:
from flask import Flask,render_template,redirect,url_for
from flask_wtf import FlaskForm
from wtforms import StringField,PasswordField,IntegerField,BooleanField,Form,FormField,FieldList,ValidationError
from wtforms.validators import InputRequired
app = Flask(__name__)
app.config['SECRET_KEY'] = 'MySecret!'
class CompanyDetailsForm(Form):
company_name = StringField('Company name')
location = StringField('Location')
class CompanyForm(FlaskForm):
def __init__(self,entries):
self.first_name = StringField('First name')
self.companies = FieldList(FormField(CompanyDetailsForm),min_entries=entries)
class IndexForm(FlaskForm):
no_of_companies = IntegerField('No of companies worked so far')
def validate_no_of_companies(form,field):
if field.data > 5:
raise ValidationError("No of companies cannot be more than 5")
@app.route('/CompanyDetails/<number>',methods=["GET","POST"])
def company_details(number):
form = CompanyForm(number)
return render_template('Companies.html',form=form)
@app.route('/home',methods=["GET","POST"])
def home():
form = IndexForm()
if form.validate_on_submit():
return redirect(url_for('company_details',number=form.no_of_companies.data))
return render_template('home.html',form=form)
if __name__ == "__main__":
app.run(debug=True)
下面是我的 home.html 页面:
<html>
<head>
<title>Home form</title>
</head>
<body>
<h1>
Please enter below details
</h1>
<form action="" method="POST">
{{ form.csrf_token }}
{{ form.no_of_companies.label }}
{{ form.no_of_companies }}
{% for error in form.no_of_companies.errors %}
<ul>
<li style="color:red">{{ error }}</li>
</ul>
{% endfor %}
</form>
</body>
</html>
下面是我的 Companies.html 代码库:
<html>
<head>
<title>Companies Form</title>
</head>
<body>
<h1>
Please enter below details
</h1>
<form action="" method="POST">
{{ form.csrf_token }}
{{ form.first_name.label }}
{{ form.first_name }}
{% for l in form.companies() %}
{{ l.form.company_name }}
{{ l.form.location }}
{% endfor %}
</form>
</body>
</html>
但我遇到了一个无法理解的错误,例如:'UnboundField' object has no attribute 'call'。
请指导我。
【问题讨论】:
标签: python-2.7 flask flask-wtforms