• flask--表单


    今天我说一下表单,提到表单就应该想起来flash闪现。

    Web表单是Web应用程序的基本功能,他是HTML页面中负责数据采集的部件。表单有三个部分组成:表单标签,表单域,表单按钮。表单允许用户输入数据,负责HTML页面数据采集,通过表单将用户输入的数据提交给服务器。

    在flask框架中使用表单我们可以使用Flask-WTF扩展,它呢封装了WTforms,并且他有验证表单数据的功能。

    当然使用Flask-WTF需要配置参数SECRET_KEY----- CSRF_ENABLED是为了CSRF(跨站请求伪造)保护。SECRET_KEY 用来生成加密令牌,当CSRF激活的时候,该设置会根据设置的密匙生成加密令牌。

    我们可以用表单可以进行登录,注册 ,但是登录,注册的时候我们必须得验证 ~ 这样才能保证业务的严谨性。

    使用Flask-WTF实现表单

    先配置一个参数,关闭CSRF效验

    在模板页面上写表格

    <form method ="post">

    {{form.username.lable}}{{form.username}}

    {{form.password.lable}}{{form.password}}

    {{form.password1.lable}}{{form.password1}}

    {{form.submit}}

    </form>

    视图函数:

    导入的模块from flask import Flask,render_template,flash

    #导入wtf扩展的表单类

    from flask_wtf import FlaskForm

    #导入自定义表单需要的字段

    from wtforms import SubmitFiled,StringField,PasswordField

    #创建一个表单类

    class RegisterForm(FlaskForm):

    username = StringField('用户名')

    password = PasswordField("密码")

    password1 = PasswordField("确认密码")

    submit = SubmitField("注册")

    接下来我给看一下简单代码验证。

    #这是代码模拟登录的

    <form methof="POSt"># 不写action的话会默认提交给自己

      <lable>用户名:</lable><input type="text" name="username" placeholder ="请输入用户名">

      <lable>密码:</lable><input type="password" name="password" placeholder ="请输入密码>

      <lable>确认密码:</lable><input type="password" name="password1" placeholder ="请输入确认密码>  

      <input type="submit" value = '注册'>

    </form>

    #视图函数中获取表单数据验证登录逻辑

    @app.route('/yan',method=["get","post"])

    def index():

    if request.method =="POST"

    #获取表单提交上来的三个参数

    username = request.form.get("username")

    password = request.form.get("password")

    password1 = request.form.get("password1")

    if not all([username,password,password1]):

    #向前端界面弹出一跳提示(闪现消息)

    flash("参数不足")

    elif password != password1:

    flash("两次密码不一致")

    else:

    #假装做注册操作

    print(username,password,password1)

    return 'sucess'

    return reder_template('temp_register.html')

    这个就是模拟验证登录注册,里面有闪现,flash闪现可以直接跳到拥护者面前把消息直接展示出来

    if __name__=='__main__':

    app.run()

    运行一下就可以了

    flash中的消息闪现,在官方的解释就是用来给用户做反馈的,不过实际上这个功能只是一个记录消息的方法,在某一个请求中记录消息,在下一个请求中获取消息,然后做响应的处理,也就是说flask只存在于两个相邻的请求中“闪现”,第三次请求就不存在这个flash。  通常情况下配合模板进行调用,可以实现一种伪“ajax”请求的效果,基于flash模块。

    WTForms是一个支持多个web框架爱的form组件,用于简化form表单的定义和一些操作。

    表单功能在有些情况下非常实用~~~~~~~

  • 相关阅读:
    Metadata, reflection and attribute
    [Tip VS] One Reason Causes VS IDE Slow To Work
    [转载]开源界的5大开源许可协议详解
    [Cursor Bitmap]Programatically Create Bitmap For Cursor
    对UML多了很多理解
    关于Task Breakdown / Plan & Project Prototyping
    第11章 界面设计模式
    第4章 O/R Mapping的一般做法
    第3章 数据和对象
    第8章 事务处理
  • 原文地址:https://www.cnblogs.com/weifeng-888/p/10181240.html
Copyright © 2020-2023  润新知