• flask表单标签


     环境:python2.7+flask+flask_wtf

    内容:flask的部分常用表单标签

    test.py

    # -*- coding: utf-8 -*-
    # flask web_form 表单控件
    import flask
    from flask_wtf import FlaskForm
    from wtforms import *
    from wtforms.fields import (StringField, PasswordField, DateField, BooleanField,
                                SelectField, SelectMultipleField, TextAreaField,
                                RadioField, IntegerField, DecimalField, SubmitField)
    from wtforms.validators import DataRequired, Length, Email, EqualTo, NumberRange
    from flask_wtf.file import FileField, FileRequired, FileAllowed
    from flask import Flask, render_template, redirect
    app = Flask(__name__)
    #from flask_uploads import UploadSet, configure_uploads, IMAGES, patch_request_class
    import os
    from os import path
    d = path.dirname(__file__)
    ###保护字段
    
    app.config['SECRET_KEY'] = 'a random string'
    '''
    app.config['UPLOADED_PHOTOS_DEST'] = os.getcwd()
    photos = UploadSet('photos', IMAGES)
    configure_uploads(app, photos)
    patch_request_class(app)
    '''
    ###定义表单
    class NewsForm(FlaskForm):
        # Text Field类型,文本输入框,必填,用户名长度为4到25之间
        username = StringField('Username', validators=[Length(min=4, max=25)])
        # Text Field类型,文本输入框,Email格式
        email = StringField('Email Address', validators=[Email()])
        # Text Field类型,密码输入框,必填,必须同confirm字段一致
        password = PasswordField('Password', [
            DataRequired(),
            EqualTo('confirm', message='Passwords must match')
        ])
        # Text Field类型,密码输入框
        confirm = PasswordField('Repeat Password')
        id = HiddenField('id', default='123')
        image = FileField(validators=[
                FileRequired('no files'),
                FileAllowed(['jpg', 'png'], 'Images only!')
                ])
        # Text Field类型,文本输入框,必须输入整型数值,范围在16到70之间
        age = IntegerField('Age', validators=[NumberRange(min=16, max=70)])
        # Text Field类型,文本输入框,必须输入数值,显示时保留一位小数
        height = DecimalField('Height (Centimeter)', places=1)
        # Text Field类型,文本输入框,必须输入是"年-月-日"格式的日期
        birthday = DateField('Birthday', format='%Y-%m-%d')
        # Radio Box类型,单选框,choices里的内容会在ul标签里,里面每个项是(值,显示名)对
        gender = RadioField('Gender', choices=[('m', 'Male'), ('f', 'Female')],validators=[DataRequired()])
        # Select类型,下拉单选框,choices里的内容会在Option里,里面每个项是(值,显示名)对
        job = SelectField('Job', choices=[
            ('teacher', 'Teacher'),
            ('doctor', 'Doctor'),
            ('engineer', 'Engineer'),
            ('lawyer', 'Lawyer')
        ])
     
        # Select类型,多选框,choices里的内容会在Option里,里面每个项是(值,显示名)对
        hobby = SelectMultipleField('Hobby', choices=[
            ('swim', 'Swimming'),
            ('skate', 'Skating'),
            ('hike', 'Hiking')
        ])
        # Text Area类型,段落输入框
        description = TextAreaField('Introduction of yourself')
        # Checkbox类型,加上default='checked'即默认是选上的
        accept_terms = BooleanField('I accept the Terms of Use', default='checked',
                                    validators=[DataRequired()])
        # Submit按钮
        submit = SubmitField('Register')
    ###控制器
    @app.route('/test/news_form', methods=['GET','POST'])
    def NewsFormViews():
        form  = NewsForm()
        if flask.request.method == "GET":
            return render_template('news_form.html',form=form)
        else:
            #print form.image.data
            if form.validate_on_submit():
                if form.id.data:
                    print form.id.data
                if form.image.data:
                    filename = form.image.data.filename
                    form.image.data.save(path.join(d,filename))
                return redirect('/test/news_form')
            else:
                print form.errors
                ###把错误信息返回到页面
                return render_template('news_form.html',form=form,error=form.errors)
    
    if __name__ == '__main__':
        app.run(host='127.0.0.1',port='8888', debug=False)
  • 相关阅读:
    Codeforces Round #433 (Div. 2, based on Olympiad of Metropolises)
    树的遍历(前序中序求后序,后序中序求前序)
    Codeforces Round #439 (Div. 2)
    python3 调用百度api实现语音识别
    Win10 opencv cuda + 扩展库 vs2019 cuda10
    flask读取摄像头并实时显示
    树莓派设置开机启动
    树莓派python OLED使用
    UART Fingerprint Sensor (C)树莓派使用
    树莓派全版本换源(多环境测试无误版)
  • 原文地址:https://www.cnblogs.com/shuangzikun/p/taotao_python_flask_flask_wtf.html
Copyright © 2020-2023  润新知