我很早就开始学习Flask / WTForms,我想知道为什么我为什么对form_name.field_name.data总是不输入任何内容
application.py:
import os
from flask import Flask, session, render_template, request, redirect, url_for
from flask_session import Session
from wtforms import Form, PasswordField, StringField, SelectField, validators
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
app = Flask(__name__)
# Create registration form class
class RegistrationForm(Form):
username = StringField("Username")
password = PasswordField("Password")
name = StringField("Name")
email = StringField("Email Address")
city = StringField("Nearest City")
@app.route("/", methods=["GET", "POST"])
def signup():
registration_form = RegistrationForm()
if request.method == "GET":
return render_template("index.html", registration_form=registration_form)
else:
username = registration_form.username.data
password = registration_form.password.data
name = registration_form.name.data
email = registration_form.email.data
city = registration_form.city.data
# print for testing
print(registration_form.data)
print(username)
print(password)
print(name)
print(email)
print(city)
user = {
"username": registration_form.username.data,
"password": registration_form.password.data,
"name": registration_form.name.data,
"email": registration_form.email.data,
"city": registration_form.city.data
}
return render_template("success.html", user=user)
index.html:
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Index</title>
</head>
<body>
<h1>Index</h1>
<form action="/" method="POST">
<ul>
{% for field in registration_form %}
<li>{{ field.label }}: {{ field }}</li>
{% endfor %}
<li><input type="submit"></li>
</ul>
</form>
</body>
</html>
print(registration_form.data)打印{'username':无,'password':无,'name':无,'email':无,'city':无},但我希望用户输入值而不是无。
类似地,这些打印中的每一个都打印无,我希望用户输入值。
print(username)
print(password)
print(name)
print(email)
print(city)