python flask-wft

这个放在前面你个表单的博客内容

精髓放这

from flask import Flask
from flask import render_template
from flask_wtf import FlaskForm
from wtforms.fields import (StringField, PasswordField, DateField, BooleanField,SelectField, SelectMultipleField, TextAreaField,RadioField, IntegerField, DecimalField, SubmitField)
from wtforms.validators import DataRequired, InputRequired, Length, Email, EqualTo, NumberRangeapp = Flask(__name__)
app.secret_key = 'asdfs'class WtfForm(FlaskForm):# StringField 文本输入框,必填,用户名长度为4到25之间,占位符username = StringField('用户名:', validators=[Length(min=4, max=25)], render_kw={'placeholder': '请输入用户名'})# Email格式email = StringField('邮箱地址:', validators=[Email()], render_kw={'placeholder': '请输入邮箱地址'})# PasswordField,密码输入框,必填password = PasswordField('密码:', validators=[DataRequired()], render_kw={'placeholder': '请输入密码'})# 确认密码,必须和密码一致password2 = PasswordField('确认密码:', validators=[InputRequired(), EqualTo('password', '两次密码要一致')])# IntegerField,文本输入框,必须输入整型数值,范围在16到70之间age = IntegerField('年龄:', validators=[NumberRange(min=16, max=70)])# DecimalField,文本输入框,必须输入数值,显示时保留一位小数height = DecimalField('身高(cm):', places=1)# DateField,文本输入框,必须输入是"年-月-日"格式的日期birthday = DateField('出生日期:', format='%Y-%m-%d')# RadioField,单选框,choices里的内容会在ul标签里,里面每个项是(值,显示名)对gender = RadioField('性别:', choices=[('0', '男'), ('1', '女')], validators=[DataRequired()])# SelectField,下拉单选框,choices里的内容会在Option里,里面每个项是(值,显示名)对job = SelectField('职业:', choices=[('teacher', '教师'),('doctor', '医生'),('engineer', '工程师'),('lawyer', '律师')])# Select类型,多选框,choices里的内容会在Option里,里面每个项是(值,显示名)对hobby = SelectMultipleField('爱好:', choices=[('0', '吃饭'),('1', '睡觉'),('2', '敲代码')])# TextAreaField,段落输入框description = TextAreaField('自我介绍:', validators=[InputRequired()], render_kw={'placeholder': '例:小明,18岁,未婚找女友'})# BooleanField,Checkbox类型,加上default='checked'即默认是选上的accept_terms = BooleanField('是否接受上述条款', default='checked', validators=[DataRequired()])# SubmitField,Submit按钮submit = SubmitField('提交')@app.route('/login', methods=['GET', 'POST'])
def login():form = WtfForm()if request.method == 'POST':# 获取form表单提交过来的值username = form.username.datapwd = form.password.dataprint(username, pwd, sep='====')return render_template('wtf.html', form=form)if __name__ == "__main__":app.run(debug=True)

用的时候备查

需要注意的是如果EMAIL位置的报错那么你需要加载一个库

pip install email_validator

这样基本可以解决。然后是。。。。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<form action="{{ url_for('login') }}" method="post">{{ form.csrf_token }}{{ form.username.label }}{{ form.username }}<br>{{ form.email.label }}{{ form.email }}<br>{{ form.password.label }}{{ form.password }}<br>{{ form.password2.label }}{{ form.password2 }}<br>{{ form.age.label }}{{ form.age }}<br>{{ form.height.label }}{{ form.height }}<br>{{ form.birthday.label }}{{ form.birthday }}<hr>{{ form.gender.label }}{{ form.gender }}<br>{{ form.job.label }}{{ form.job }}<br>{{ form.hobby.label }}{{ form.hobby }}<br>{{ form.description.label }}{{ form.description }}<br>{{ form.accept_terms.label }}{{ form.accept_terms }}<br>{{ form.submit }}<br></form>
</body>
</html>

如果需要将WFT与bootstrap进行联合渲染使用,那么参考这个 传送门

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/592367.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第一个Qt程序----Hello word!

从今天起就开始我们的第一个Qt小程序&#xff0c;点击New Project后点击右侧的Application后点击Qt Widgets Application。Qt Widgets 模块提供了一组UI元素用于创建经典的桌面风格的用户界面&#xff0c;Widgets是小部件的意思&#xff0c;也可以称为控件&#xff0c;因此Qt …

粒子群优化pso结合bp神经网络优化对csv文件预测matlab(3)

1.csv数据为密西西比数据集&#xff0c;获取数据集可以管我要&#xff0c;数据集内容形式如下图&#xff1a; 2.代码 这里参考的是b站的一位博主。 数据集导入教程在我的另一篇文章bp写过&#xff0c;需要的话可以去看一下 psobp.m close all clc%读取数据 inputX; outputY;…

在 Android 上使用 MediaExtractor 和 MediaMuxer 提取视频\提取音频\转封装\添加音频等操作

文章目录 前言一、MediaExtractor 基本介绍与使用二、MediaMuxer 基本介绍与使用示例提取视频提取音频混合视频与音频文件 总结参考 前言 之前我们介绍了 FFmpeg 并利用它解封装、编解码的能力完成了一款简易的视频播放器。FFmpeg 是由 C 实现的&#xff0c;集成至 Android 等…

JVM中部分主要垃圾回收器的特点、使用的算法以及适用场景

JVM中部分主要垃圾回收器的特点、使用的算法以及适用场景&#xff1a; Serial GC&#xff08;串行收集器&#xff09; 特点&#xff1a;单线程执行&#xff0c;对新生代进行垃圾回收时采用复制算法&#xff08;Copying&#xff09;&#xff0c;在老年代可能使用标记-压缩或标记…

(学习打卡2)重学Java设计模式之六大设计原则

前言&#xff1a;听说有本很牛的关于Java设计模式的书——重学Java设计模式&#xff0c;然后买了(*^▽^*) 开始跟着小傅哥学Java设计模式吧&#xff0c;本文主要记录笔者的学习笔记和心得。 打卡&#xff01;打卡&#xff01; 六大设计原则 &#xff08;引读&#xff1a;这里…

K8S本地开发环境-minikube安装部署及实践

引言 在上一篇介绍了k8s的入门和实战&#xff0c;本章就来介绍一下在windows环境如何使用minikube搭建K8s集群&#xff0c;好了废话不多说&#xff0c;下面就和我一起了解Minikube吧。 什么是Minikube&#xff1f; Minikube 是一种轻量级的 Kubernetes 实现&#xff0c;可在本…

【docker】安装 Redis

查看可用的 redis版本 docker search redis拉取 redis最新镜像 docker pull redis:latest查看本地镜像 docker images创建挂在文件 mkdir -pv /test1/docker_volume/redis/datamkdir -pv /test1/docker_volume/redis/confcd /test1/docker_volume/redis/conf/touch redis.con…

IPC之十二:使用libdbus在D-Bus上异步发送/接收信号的实例

IPC 是 Linux 编程中一个重要的概念&#xff0c;IPC 有多种方式&#xff0c;本 IPC 系列文章的前十篇介绍了几乎所有的常用的 IPC 方法&#xff0c;每种方法都给出了具体实例&#xff0c;前面的文章里介绍了 D-Bus 的基本概念以及调用远程方法的实例&#xff0c;本文介绍 D-Bus…

[Angular] 笔记 23:Renderer2 - ElementRef 的生产版本

chatgpt: Renderer2 简介 在 Angular 中&#xff0c;Renderer2 是一个服务&#xff0c;用于处理 DOM 操作的抽象层。它提供了一种安全的方式来操作 DOM&#xff0c;同时与平台无关&#xff0c;有助于维护应用程序的跨浏览器兼容性和安全性。 Renderer2 的作用是在 Angular 组…

【C++】浅拷贝 / 深拷贝 / 写时拷贝

文章目录 1. 经典的string类问题2. 浅拷贝3. 深拷贝3.1 传统写法的String类3.2 现代写法的String类 4. 写时拷贝 1. 经典的string类问题 上一篇博客已经对string类进行了简单的介绍&#xff0c;大家只要能够正常使用即可。 链接&#xff1a;【C】string 在面试中&#xff0c;面…

20 太空漫游

效果演示 实现了一个太空漫游的动画效果&#xff0c;其中包括火箭、星星和月亮。当鼠标悬停在卡片上时&#xff0c;太阳和星星会变成黄色&#xff0c;火箭会变成飞机&#xff0c;月亮会变成小型的月亮。整个效果非常炫酷&#xff0c;可以让人想起科幻电影中的太空漫游。 Code &…

计算机网络(7):网络安全

网络安全问题 计算机网络上的通信面临以下的四种威胁: (1)截获(interception)攻击者从网络上窃听他人的通信内容。 (2)中断(interruption)攻击者有意中断他人在网络上的通信。 (3)篡改(modification)攻击者故意篡改网络上传送的报文。 (4)伪造(fabrication)攻击者伪造信息在网…

Python通过用户输入两个数字并计算两个

通过用户输入两个数字&#xff0c;并计算两个 以下实例为通过用户输入两个数字&#xff0c;并计算两个数字之和&#xff1a; 实例(Python 3.0) # -*- coding: UTF-8 -*-# Filename : test.py # author by : www.dida100.com# 用户输入数字 num1 input(输入第一个数字&#…

C# WinForm MessageBox自定义按键文本 COM组件版

c# 更改弹窗MessageBox按钮文字_c# messagebox.show 字体-CSDN博客 需要用到大佬上传到百度云盘的Hook类&#xff0c;在大佬给的例子的基础上改动了点。 加了ok按键&#xff0c;还原了最基础的messageBox。 为了适配多语言&#xff0c;增加ReadBtnLanguge方法。 应用时自己…

开发辅助三(缓存Redisson分布式锁+分页插件)

缓存 缓存穿透&#xff1a;查询一个不存在的数据&#xff0c;由于缓存不命中&#xff0c;将大量查询数据库&#xff0c;但是数据库也没有此记录。 没有将这次查询的null写入缓存&#xff0c;导致了这个不存在的数据每次请求都要到存储层查询&#xff0c;失去了缓存的意义。 解…

export .... 配置环境变量,环境变量都存去哪里了?

今天在配置镜像环境的时候&#xff0c;在纠结执行如下命令之后&#xff0c;这个环境变量会保存到哪里&#xff1f;然后找了.bash_profile和.zshrc文件都没有找到&#xff0c;在纠结乱存到哪里去了 export HOMEBREW_API_DOMAIN"https://mirrors.tuna.tsinghua.edu.cn/home…

复试 || 就业day02(2024.01.02)项目一

文章目录 前言最小二乘法的推导使用正规方程求解 y w x b ywxb ywxb多元线性回归 y w 1 x 1 w 2 x 2 b yw1x1w2x2b yw1x1w2x2b总结 前言 &#x1f4ab;你好&#xff0c;我是辰chen&#xff0c;本文旨在准备考研复试或就业 &#x1f4ab;本文内容来自某机构网课&#xff…

详解 docker 镜像制作的两种方式

概要 制作Docker镜像一般有2种方法&#xff1a; 通过Dockerfile&#xff0c;完成镜像的创建使用仓库中已有的镜像&#xff0c;安装自己使用的软件环境后完成新镜像创建 docker 常用命令 docker build: 用于构建 Docker 镜像。该命令可以从 Dockerfile 构建镜像&#xff0c;…

2022年12月10日-2023年12月28日

好久没写文章了,也就是好久没写流水账了.今天写的,到底是生日,还是记录这一年的工作,比较模糊,时间上来讲,两个用意合一起吧. 这一年,是极其艰苦的一年,也是不堪回首的一年.3月份的时候设宴欢送朋友离开深圳,回住处上楼时跌倒入院,之后开刀.家人们都从老家赶来,照顾了我好几天.…

Debezium发布历史43

原文地址&#xff1a; https://debezium.io/blog/2018/12/05/automating-cache-invalidation-with-change-data-capture/ 欢迎关注留言&#xff0c;我是收集整理小能手&#xff0c;工具翻译&#xff0c;仅供参考&#xff0c;笔芯笔芯. 通过更改数据捕获自动使缓存失效 2018 年…