Flask之Form表单使用

flask-WTF:参考资料

flask-wtf Fields 资料

FLASK-WTF中文文档

有了上面2份资料就可以做flask的form表单,下面示例是实现一个添加的功能

1. 创建forms.py

from flask_wtf import FlaskForm
from wtforms import StringField,TextAreaField,SubmitField,SelectField
from wtforms.validators import DataRequired

class NewsForm(FlaskForm):
    title = StringField(label='新闻标题',validators=[DataRequired("请输入标题")],description="请输入标题",render_kw={"required":"required"})
    content = TextAreaField(label='新闻内容',validators=[DataRequired("请输入内容")],description="请输入内容",render_kw={"required":"required","class":"form-control"})
    types = SelectField(label='新闻类型',choices=[('首页','首页'),('动漫周边','动漫周边'),('军事要闻','军事要闻'),('每日上海','每日上海'),('图片','图片')])
    image = StringField(label='新闻图片',description="请输入图片地址",render_kw={"required":"required","class":"form-control"})
    submit = SubmitField('提交')

2. 在业务处理模块 wynews.py写上对应的路由

app.config['SECRET_KEY'] = 'a random string'      #  通过csrf
from forms import NewsForm
@app.route('/admin/add/',methods=("GET","POST"))
def add():
    form = NewsForm()
    if form.validate_on_submit():   # 如果form表单以submit进行提交,且用户填写的字段通过validators验证器,那么条件为真(submit提交方式就是“POST”)
        new_obj = News(             # 使用flask-sqlalchemy定义的一个表结构 
            title = form.title.data,
            content = form.content.data,
            types = form.types.data,
            create_at = datetime.now()
        )
        db.session.add(new_obj)
        db.session.commit()
        # 文字提示 flash
        return redirect(url_for('admin',page=2))         # 跳转到admin页
    return render_template('admin/add.html',form=form)

前端html的add.html

{% block content %}
    <form class="form-horizontal" role="form" method="post">
        <div class="form-group">
            <label for="title" class="col-sm-2 control-label">{{ form.title.label.text }}</label>
            <div class="col-sm-10">
                {{ form.title }}
            </div>
        </div>
      此处省略  结构类似
        <div class="form-group">
            <div class="col-sm-offset-2 col-sm-10">
                {{ form.csrf_token }}
                {{ form.submit }}
            </div>
        </div>
    </form>
{% endblock %}

效果图


ps:       

 {{ form.title.label}}   前端显示:<label for="title">新闻标题</label>  


  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值