flask web如何加载html,Python进阶(五十三)-Flask Web开发实现将表单渲染成HTML

#Python进阶(五十三)-Flask Web来发实现将表单渲染成HTML

在利用Flask进行Python Web开发时,页面中的wtf.quick_form(form)函数中的参数form是如何与视图函数中的form变量关联起来的?即Flask是如何将表单渲染成HTML的?下面以实例的形式进行问题求解。

在视图函数views.py中:

34b32b95cd238fa4f89079d4c0f2a44b.png

将相应的表单类实例作为参数传递给模版。

相应的LoginForm()定义在forms.py中,定义如下:

# -*- coding:utf-8 -*-

from flask_wtf import Form

from wtforms import StringField, PasswordField, BooleanField, SubmitField

from wtforms.validators import Required, Length, Email, Regexp, EqualTo, DataRequired

# 用户登录表单

class LoginForm(Form): uname = StringField(u'用户名:', validators=[ DataRequired(), Length(1,64), '^[A-Za-z][A-Za-z0-9_.]*$', 0, u'用户名必须由字母、数字、下划线或 . 组成']) pwd = PasswordField(u'密码:', validators=[DataRequired()]) remember_me = BooleanField(u'记住我?') submit = SubmitField(u'登录')1

2

3

4

5

6

7

8

9

10

11

12

13

注意:在执行以上代码的过程中,会出现Wraning提示:‘FlaskWTFDeprecationWarning: “flask_wtf.Form” has been renamed to “FlaskForm” and will be removed in 1.0. ’

针对该问题,查看作者声明,将Form 类重命名为 FlaskForm,这样导入就没问题了。

from flask_wtf import FlaskForm1

相应的类中的参数也需要改为FlaskForm。

html模版内容如下:

{% extends "base_login.html" %}

{% import "bootstrap/wtf.html" as wtf %}

{% block content %} {{ super() }} {% for message in get_flashed_messages() %}

× {{message}}
{% endfor %} {{ wtf.quick_form(form) }}

{% endblock content %}1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

另外,在调试过程中,曾经出现过预料之外的模版渲染情况,即生成的Web表单并未在表单模版中渲染成功。经过代码检查校验,发现是由于基模版与继承模版出现标签不匹配和匹配错误所造成的。

##经验教训

在定义基模版时应确保文档的结构完整,并予以继承模版适当的继承空间。

经过修改基模版与继承模版,模版可以正常渲染。页面如下图所示:

2a95bf5f0fb25668f532025b70b16c11.png

![这里写图片描述](https://img-blog.csdnimg.cn/img_convert/e415b30dbbbc5ab4a2c1175b0e899fa7.png)

![这里写图片描述](https://img-blog.csdnimg.cn/img_convert/5ea7f92a4b50d8465587c45e4b34108a.png)

![这里写图片描述](https://img-blog.csdnimg.cn/img_convert/f26b6c802951d54cd92c22204011ed16.png)

文章来源: shq5785.blog.youkuaiyun.com,作者:No Silver Bullet,版权归原作者所有,如需转载,请联系作者。

原文链接:shq5785.blog.youkuaiyun.com/article/details/72821694

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值