首页 > 其他分享 >轻量级Web框架Flask——Web表单

轻量级Web框架Flask——Web表单

时间:2022-10-02 17:24:27浏览次数:87  
标签:username Web form Flask 表单 password 轻量级

安装

Flask-WTF及其依赖可使用pip安装

pip install flask_wtf

配置

要求应用配置一个密钥。密钥是一个由随机字符构成的唯一字符串,通过加密或签名以不同的方式提升应用的安全性

app=Flask(__name__)
app.secret_key='123321'

如果不设置会报错:

RuntimeError: A secret key is required to use CSRF.

表单类

每个Web表单都由一个继承自FlaskForm的类表示。这个类定义表单中的一组字段,每个字段都用对象表示。字段对象可附属一个或多个验证函数

from flask_wtf import FlaskForm
from wtforms import *
from wtforms.validators import *

class NameForm(FlaskForm):
    username = StringField('用户名',validators=[DataRequired()])
    password = PasswordField('密码',validators=[DataRequired()])
    submit = SubmitField('提交')

StringField类表示属性为type="text"的HTML<input>元素。

SubmitField类表示属性为type="submit"的HTML<input>元素。

WTForms支持的HTML标准字段如表:

 

 WTForms内建的验证函数如表:

渲染表单

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <h1>用户注册登录</h1>
    <form method="post" action="/login">
        {{ form.csrf_token()}}
        {{ form.username.label }}{{ form.username}}
        {{ form.password.label }}{{ form.password}}
        {{ form.submit }}{{errormsg}}

        {% for message in get_flashed_messages() %}
            {{ message }}
        {% endfor %}
    </form>
</head>
<body>

</body>
</html>
{{ form.csrf_token()}}供Flask-WTF的CSRF防护机制使用
{{ form.username.label }}取表单类中设置的标签

视图中处理表单

@app.route("/login",methods=['GET','POST'])
def login():
    form = NameForm()
    if request.method == 'POST':
        if form.validate_on_submit():
            username = request.form.get('username')
            password =  request.form.get('password')
            if username == 'admin' and password == 'admin':
                flash('登录成功')
            else:
                return render_template('newregister.html',form = form, errormsg="登陆失败")
    return render_template('newregister.html', form=form)

提交表单后,如果数据能被所有验证函数接受,那么validate_on_submit()方法的返回值为True,否则返回False。这个函数的返回值决定是重新渲染表单还是处理表单提交的数据。

注:这里用了一个flash(from flask import Flask,render_template,request,flash)

  再渲染表单的时候使用{% for message in get_flashed_messages() %} 取遍历取值

友情链接

https://www.cnblogs.com/yetangjian/p/15881588.html

https://www.cnblogs.com/yetangjian/p/15676966.html

https://www.cnblogs.com/yetangjian/p/16049697.html

标签:username,Web,form,Flask,表单,password,轻量级
From: https://www.cnblogs.com/yetangjian/p/16749045.html

相关文章

  • web
    那些口口声声,JAVA越来越难学的人,应该看着你们,像我一样。我看着你们,满怀羡慕。人类研究了几十年的代码调优,所有的Exception和Error,像是专门为你们准备的礼物。Spring繁荣、......
  • 使用maven中tomcat插件运行web应用程序
    是这样的,在我学习springmvc的时候,第一次按照教程使用maven中的tomcat插件运行web应用程序,然后就遇到下面类似的问题:  他这里一直在run,搞得很难受(一直认为时运行失败导......
  • JavaWeb----Vue+Axios+Json的数据请求
    详细资料:https://heavy_code_industry.gitee.io/code_heavy_industry/pro001-javaweb/lecture/chapter12/verse02.html《axios+vue发送普通参数请求》  《Json》 ......
  • JavaWeb-SMBMS(超市管理项目)
    目录SMBMS(超市管理项目)搭建项目准备工作登录功能实现登录功能优化登录拦截器密码修改优化密码修改使用Ajax用户管理模块实现1、获取用户数量2、获取用户列表3、获取角色......
  • JavaWeb-邮件收发
    目录邮件收发邮件收发原理Java发送邮件概述纯文本邮件带图片和附件的邮件JavaWeb发送邮件邮件收发电子邮件要在网络上实现邮件功能,必须要有专门的邮件服务器。这些邮件......
  • flask获取硬件资源信息
    1.获取gpu信息[root@ks-devopspython]#catgpu_info.pyimportpynvmlUNIT=1024*1024defGpuInfo():pynvml.nvmlInit()#初始化gpuDeriveInfo=py......
  • ciscn2019华北赛区Day1-Web1dropbox-md
    title:ciscn2019华北赛区Day1Web1dropbox.mddate:2022-06-2620:56:10tags:进去之后呢看到一个登录框然后注册一个账号进去看到有上传文件的东西然后试试上传一个......
  • 安洵杯2019——eazy——web-md
    title:安洵杯2019——eazy——web.mddate:2022-10-0210:11:51tags:[安洵杯2019]easy_web绷不住了。。。。看题把上面get这里应该是可以获取文件cmd是什么现在......
  • 创建web项目
    不使用web骨架的方式创建maven项目--》在pom.xml里面设置packaging为war的方式---》点击file--》projectstructure--》facets在此页面设置  使用骨架......
  • pg_eventserv push pg 变动事件到websocket 服务
    pg_eventserv的实现原理并不难,核心还是利用了pg的特性,只是包装了一个方便的golangserver然后我们可以通过webscoket发送出去参考使用CREATETABLEpeople(......