bootstrap form表单提交_Python web开发:Flask系列之表单操作

本文是Flask系列教程的一部分,介绍了如何利用Bootstrap创建表单并进行提交。内容涵盖Flask基本知识、表单类的创建、HTML模板的构建、页面路由以及完整代码示例。
摘要由CSDN通过智能技术生成
Flask系列前三篇:   3)Flask理解Views、models和渲染模板层的调用关系2)Flask之数据入库操作,完整十步! 1)Flask版 hello world

今天再继续Flask系列第四篇:Flask之基本的表单操作

1 开篇

先说一些关于Flask的基本知识,现在不熟悉它们,并不会影响对本篇的理解和掌握。

Flask是一个基于Python开发,依赖jinja2模板和Werkzeug WSGI服务的一个微型框架。

Werkzeug用来处理Socket服务,其在Flask中被用于接受和处理http请求;Jinja2被用来对模板进行处理,将模板数据进行渲染,返回给用户的浏览器。

这到这些,对于理解后面调试出现的两个问题会有帮助,不过不熟悉仍然没有关系。

2 基本表单

首先导入所需模块:

from wtforms import StringField,PasswordField, BooleanField, SubmitField
from flask_wtf import FlaskForm

wtformsflask_wtf是flask创建web表单类常用的包。

具体创建表单类的方法如下,登入表单LoginForm继承自FlaskForm.

分别创建StringFiled实例用户名输入框user_name,密码框password,勾选框remember_me和提交按钮submit.

class LoginForm(FlaskForm):
user_name = StringField()
password = PasswordField()
remember_me = BooleanField(label='记住我')
submit = SubmitField('Submit')

至此表单类对象创建完毕

3 html模板

使用Bootstrap. 它是由Twitter推出的一个用于前端开发的开源工具包,给予HTML、CSS、JavaScriot,提供简洁、直观、强悍的前端开发框架,是目前最受环境的前端框架。

flak_bootstrap提供使用的接口。方法如下,首先pip install bootstrap,然后创建一个实例bootstrap.

from flask_bootstrap import Bootstrap
bootstrap = Bootstrap()

然后创建index.html文件,第一行导入创建的Bootstrap实例bootstrap

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

再创建第2节中创建的LoginForm实例form,调用渲染模板方法,参数form赋值为实例form:

from flask import render_template
form = LoginForm()
render_template('index.html', form=form)

再在index.html输入以下代码,{{ wtf.quick_form(form) }}将实例form渲染到html页面中。

<div class="container">
<h3>系统登入h3>
<div class="col-md-4">
{{ wtf.quick_form(form) }}
div>
div>

4 index页面路由

flask_wtf创建的form,封装方法validate_on_submit,具有表单验证功能。

@app.route('/', methods=['GET', 'POST'])
def index():
form = LoginForm()
if form.validate_on_submit():
print(form.data['user_name'])
return redirect(url_for('print_success'))

return render_template('index.html', form=form)

验证通过跳转到print_success方法终端点:

@app.route('/success')
def print_success():
return"表单验证通过"

5 完整代码

共有两个文件:一个py,一个html:

from flask import Flask
from flask import render_template, redirect, url_for
from wtforms import StringField,PasswordField, BooleanField, SubmitField
from flask_wtf import FlaskForm
from flask_bootstrap import Bootstrap

bootstrap = Bootstrap()

app = Flask(__name__)
app.config['SECRET_KEY'] = "hard_to_guess_secret_key$$#@"

bootstrap.init_app(app)

@app.route('/', methods=['GET', 'POST'])
def index():
form = LoginForm()
if form.validate_on_submit():
print(form.data['user_name'])
return redirect(url_for('print_success'))

return render_template('index.html', form=form)

@app.route('/success')
def print_success():
return"表单验证通过"


class LoginForm(FlaskForm):
user_name = StringField()
password = PasswordField()
remember_me = BooleanField(label='记住我')
submit = SubmitField('Submit')

if __name__ == "__main__":
app.run(debug=True)

html代码:

{% import"bootstrap/wtf.html"as wtf %}
class="container">
<h3>系统登入h3>
<div class="col-md-4">
{{ wtf.quick_form(form) }}div>div>

启动后,控制台显示如下:

2694a5be923d7dbf3901fbd6a4ad45cc.png

然后网页中输入127.0.0.1:5000,网页显示:

2246ae69a313c48fceb5439748351de9.png

6 两个错误

例子君也是Flask新手,在调试过程中,遇到下面两个错误。

1) CSRF需要配置密码

7a210052a73de565184f29cebc4b155c.png

遇到这个错误,解决的方法就是配置一个密码。具体对应到第5节完整代码部分中的此行:

app.config['SECRET_KEY']  = "hard_to_guess_secret_key$$#@"

2) index.html未找到异常

a3ae5ad630f0f24d8181ddcc7e9b5bea.png

出现这个错误的原因不是因为index.html的物理路径有问题,而是我们需要创建一个文件夹并命名为:templates,然后把index.html移动到此文件夹下。

觉得好看就点个在看吧

40efe765517526ca48e5bdf09742feb0.gif 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值