Python 如何从包含在另一个模板中的模板在flask中呈现WTF表单?

Python 如何从包含在另一个模板中的模板在flask中呈现WTF表单?,python,flask,jinja2,wtforms,Python,Flask,Jinja2,Wtforms,我希望在我的home.html页面中包含WTF表单的模板,如下所示:{%include“users/register.html”%},同时保留呈现home.html和表单register.html的代码,如下所示 我有一个主页“home.html”,它由我的“app.py”文件中的“index()”函数路由 “app.py”还注册在“views.py”文件中定义的蓝图“user\u blueprint” 我有一个函数“sign_up”,它在一个名为“register.html”的模板中呈现wtf

我希望在我的home.html页面中包含WTF表单的模板,如下所示:{%include“users/register.html”%},同时保留呈现home.html和表单register.html的代码,如下所示

我有一个主页“home.html”,它由我的“app.py”文件中的“index()”函数路由

“app.py”还注册在“views.py”文件中定义的蓝图“user\u blueprint”

我有一个函数“sign_up”,它在一个名为“register.html”的模板中呈现wtf表单

在home.html中,我想这样做:{%include“users/register.html”%}。我的理解是,这不起作用,因为表单没有传递到home.html,在home.html中包含register.html本质上类似于复制表单,表单对象不会传递到home.html

如何在维护蓝图(而不仅仅是将表单复制到“index()”)的同时呈现模板“register.html”?虽然这可能不是最好的方法,但在这种情况下,您会提出什么建议?谢谢

app.py

import...

app = Flask(__name__)
app.config.from_object('config')
app.secret_key = "123"

UPLOAD_FOLDER = os.path.join(app.root_path, 'static/img/products/')
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER


@app.before_first_request
def init_db():
    Database.initialize()


@app.route('/')
@app.route('/home')
def index():
    products = Product.find_all()
    return render_template('home.html', title='Home', products=products)

app.register_blueprint(user_blueprint, url_prefix="/users")
views.py

user_blueprint = Blueprint('users', __name__)


class RegisterUser(FlaskForm):
    first_name = StringField('first_name', validators=[DataRequired()])
    last_name = StringField('last_name', validators=[DataRequired()])
    email = StringField('email', validators=[DataRequired()])
    password = StringField('password', validators=[DataRequired()])


@user_blueprint.route('/register', methods=['GET', 'POST'])
def sign_up():
    form = RegisterUser(request.form)
    if request.method == 'POST' and form.validate():
        first_name = form.first_name.data
        last_name = form.last_name.data
        email = form.email.data
        password = form.password.data
        print(first_name)

    try:
        if User.register_user(first_name, last_name, email, password):
            session['email'] = email
            return redirect(url_for("index"))
    except UserErrors.UserError as e:
        return e.message

    return render_template('users/register.html')  

return render_template('users/register.html', form=form)
register.html

{% from "_formhelpers.html" import render_field %}
<form method=post>
    <dl>
        {{ render_field(form.first_name) }}
        {{ render_field(form.last_name) }}
        {{ render_field(form.email) }}
        {{ render_field(form.password) }}
    </dl>
    <p><input type=submit value=register>
</form>

我要做的方法是通过
index()
路由将表单传递到
home.html
,并使用
{%include“users/register.html”%}
将其包含到您的家中,然后将表单的操作注册到处理表单的
注册()路由

通过这种方式,您可以在单独的路径上保持窗体的显示和窗体的处理。。。然后在
sign\u up()
路径中处理表单后,您可以将用户引导到任何其他页面

{% include "users/register.html" %}