• 热门搜索:
  • 装机系统
  • 雨林木风系统
  • 深度系统
  • 电脑公司系统
  • win7装机版
  • 教程分类
    当前位置:主页 > 教程咨询 > Linux教程

    Flask中的表单实现页面注册

    来源:装机员┆发布时间:2018-09-14 16:03┆点击:

    装机员为您提供Flask中的表单实现页面注册的文章咨询供您阅读,如何使用Flask中的表单实现页面注册的方法对您有帮助也请您举手之劳分享给您身边的人。

    almebic是一个数据库版本管理的工具,在对一个数据表进行添加列,删除列的时候相当于进行了数据库版本的改变。flask-migrate是对almbic进行的封装,方便在flask中使用alembic管理数据库。

    使用flask-migrate首先要在create_app的时候将它注册到app上。

    from flask_migrate import Migrate

    def create_app(config):
        app = Linux/2621.html">Linux/23949.html">Flask(__name__)
        app.config.from_object(configs.get(config))
        db.init_app(app)
        Migrate(app, db)
        register_blueprints(app)
        return app

    配置后完成运行

    flask db

    第一次使用需要进行初始化

    flask db init

    运行:

    flask db migrate -m 'init database'

    这个命令会在version路径下生成一个数据库升级脚本,-m后是本次提交的相关信息,检查无误后可以运行

    flask db upgrade

    将升级写入数据库

    使用flask-wtf

    wtforms是python实现的一个库,它能在python和HTML form之间建立一种映射关系,类似ORM,方便创建表单和在模板中渲染表单。flask-wtf则是对wtforms的封装,方便在flask中使用wtforms,并在wtforms的基础上添加了crsf token的生成和验证机制。使用flask-wtf,需要定义的表单中继承flask-wtf提供的FlaskForm基类,并为每一个表单输入一个声明字段。

    from flask_wtf import FlaskForm
    from wtforms import StringField, PasswordField, SubmitField, BooleanField
    from wtforms.validators import Length, Email, EqualTo, Required

    class RegisterForm(FlaskForm):
        username = StringField('用户名', validators=[Required(), Length(3, 24)])
        email = StringField('邮箱', validators=[Required(), Email()])
        password = PasswordField('密码', validators=[Required(), Length(6, 24)])
        repeat_password = PasswordField('重复密码', validators=[Required(), EqualTo('password')])
        submit = SubmitField('提交')

    class LoginForm(FlaskForm):
        email = StringField('邮箱', validators=[Required(), Email()])
        password = PasswordField('密码', validators=[Required(), Length(6, 24)])
        remember_me = BooleanField('记住我')
        submit = SubmitField('提交')

    要在Form类为每个输入框声明一个对应的Field,Field一般提供两个参数,第一个是输入框html中的label,第二个一般是validators(验证器)。validators是一个列表,可以放入多个验证器,装机系统,表单提交时,wtforms会使用列表里的验证器对提交的数据进行验证,验证失败的数据,wtforms会将失败信息写入Field下的errors列表下。

    在注册路由的python文件中将相应的form传递到模板中

    from **.forms import LoginForm, RegisterForm

    @front.route('/login')
    def login():
        form = LoginForm()
        return render_template('login.html', form=form)

    然后在login.html中进行表单的渲染。

    {% extends "base.html" %}

    {% block title %}
    Login
    {% endblock %}

    {% block body %}
      <h2>登录</h2>
      <!-- 要在 form 里指定 POST 方法和点击提交后需要请求的 url -->
      <form method="POST" action="{{ url_for('front.login') }}">
        <!-- flask-wtf 帮我们在表单类中添加了 csrf_token,我们只要简单的渲染就可以了, 渲染后会在 hmtl 页面生成一个隐藏域,里面是 csrf_token 值 -->
        {{ form.csrf_token }}

    <!-- 使用 Bootstrap 的表单样式渲染每个表单项 -->
        <div>
          <!-- 首先渲染 field label -->
          <!-- 接着渲染 field,StringField 渲染后会生成一个 <input> 标签,field 里面可以传入 html 的标签属性,这些属性会渲染到生成的 html 标签中 -->
          {{ form.email.label }} {{ form.email(class='form-control') }}
        </div>

    <div>
          {{ form.password.label }} {{ form.password(class='form-control') }}
        </div>

    <!-- BooleanField 的渲染有些特殊,使用了 Bootstrap 的 checkbox 类-->
        <div>
          <label>
            {{ form.remember_me() }}
    <!-- 注意这里获取的是 label 的 text 属性,也就是我们在表单中定义的"记住我"这个字符串-->
    {{ form.remember_me.label.text }}
          </label>
        </div>
        <!-- 渲染提交按钮,传入 Bootstrap 的按钮类-->
        {{ form.submit(class="btn btn-primary") }}
      </form>
    {% endblock %}

    由于在同一个网站中的表单结构和内容是相似的,因此可以使用macro对重复的动作进行封装,使用的是jinjia2的语法。

    {% macro macro_name(arg1, arg2, ...)%}
    ....
    {% endmacro %}

    macro通常存放在macro.html中,使用该文件的某个macro时,使用Import导入即可

    {% from "macro.html" import macro_name %}

    使用{{}}格式语法进行调用

    {{ macro_name(arg1, arg2 )}}

    下面是一个render_form的宏用于渲染表单


    以上就是装机员给大家介绍的如何使用Flask中的表单实现页面注册的方法了,如何使用Flask中的表单实现页面注册的方法到这里也全部结束了相信大家对如何使用Flask中的表单实现页面注册的方法都有一定的了解了吧,好了,如果大家还想了解更多的资讯,那就赶紧点击装机员系统官网吧。

    本文来自装机员www.zhuangjiyuan.com如需转载请注明!

    Tag标签| RSS订阅 | 网站地图
    装机员系统之家提供win7装机版xp系统下载win7系统下载、最新Windows10系统下载,专为装机修机员奉上最好的软件、系统、U盘pe、程等平台
    请勿发布违反国家法律法规的内容,会员观点不代表本站立场.本站发布的系统与软件仅为个人学习测试使用,请在下载后24小时内删除,不得用于任何商业用途,
    否则后果自负,请支持购买微软正版软件! 如侵犯到您的权益,请及时通知我们,我们会及时处理。 粤ICP备15116662号